溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

springboot日志功能的詳細(xì)介紹

發(fā)布時(shí)間:2021-08-05 09:33:28 來(lái)源:億速云 閱讀:199 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“springboot日志功能的詳細(xì)介紹”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“springboot日志功能的詳細(xì)介紹”吧!

 

一. 主流日志框架

市場(chǎng)上存在非常多的日志框架。JUL(java.util.logging),JCL(Apache Commons Logging),Log4j,Log4j2,Logback、 SLF4j、 jboss-logging等。Spring Boot在框架內(nèi)容部使用JCL,spring-boot-starter-logging采用了 slf4j+logback的形式,Spring Boot也能自動(dòng)適配(jul、 log4j2、 logback) 并 簡(jiǎn)化配置。

在寫(xiě)log4j的兩種配置方式(xml和propertiies)時(shí)我就在想“為什么使用log4j時(shí)需要導(dǎo)入self4j、log4j和整合jar包”?

經(jīng)過(guò)一番的周折之后,終于獲取到了答案,其實(shí)答案很簡(jiǎn)單,日志分為兩類:日志門(mén)面和日志實(shí)現(xiàn)兩種,這兩個(gè)之間的關(guān)系相當(dāng)于java中接口和實(shí)現(xiàn)類的關(guān)系,接下來(lái)對(duì)上面的日志框架做一下簡(jiǎn)單的分類:

日志門(mén)面日志實(shí)現(xiàn)
JCL (Jakarta Common Logging)Log4j
SLF4J(Simple Logging for Java)JUL(java.util .logging)
jboss-loggingLog4j2
...Logback ...

他們之間不是一一對(duì)應(yīng)關(guān)系,只是這樣寫(xiě)看起來(lái)美觀點(diǎn)。

 

二、日志的使用

  • SpringBoot:底層是Spring框架,Spring框架默認(rèn)是用JCL
  • SpringBoot選用SLF4j和logback
  • 以后開(kāi)發(fā)的時(shí)候,日志記錄方法的調(diào)用,不應(yīng)該來(lái)直接調(diào)用日志的實(shí)現(xiàn)類,而是調(diào)用日志抽象層里面的方法;給系統(tǒng)里面導(dǎo)入slf4j的jar和logback的實(shí)現(xiàn)jar
public class HelloWorld {
  Logger logger = LoggerFactory.getLogger(HelloWorld.class);  
}
   

1、jar包的引入

從上面可知,導(dǎo)入日志需要在上面表中選擇一個(gè)日志門(mén)面和一個(gè)日志實(shí)現(xiàn)。下面以Slf4j為例展示其對(duì)應(yīng)關(guān)系如下:springboot日志功能的詳細(xì)介紹

這里又有一個(gè)問(wèn)題,springboot默認(rèn)使用SLF4j和logback,底層spring默認(rèn)使用JCL,然后如果導(dǎo)入了Hibernate(jboss-logging),如何使別的框架和我一起統(tǒng)一使用slf4j進(jìn)行輸出?

查看Slf4j的官方文檔時(shí),確實(shí)有解決方法,如下:

springboot日志功能的詳細(xì)介紹其解決思路如下:

  • 將系統(tǒng)中其他日志框架先排除出去;
  • 用中間包來(lái)替換原有的日志框架;
  • 我們導(dǎo)入slf4j其他的實(shí)現(xiàn)
 

springboot中的日志關(guān)系

<dependency>
    <groupId>org.springframework.boot</groupId>
     <artifactId>spring‐boot‐starter</artifactId>
</dependency>
 
springboot日志功能的詳細(xì)介紹  
image

總結(jié):

  • SpringBoot底層也是使用slf4j+logback的方式進(jìn)行日志記錄
  • SpringBoot也把其他的日志都替換成了slf4j;
  • 中間替換包如:log4j-to-slf4j.jar...
<!--移除JCL日志框架-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring‐core</artifactId>
    <exclusions>
        <exclusion>
            <groupId>commons‐logging</groupId>
            <artifactId>commons‐logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 

springboot的處理方法和上面的圖解如出一轍,先把其它都轉(zhuǎn)換為Slf4j,支持多種日志實(shí)現(xiàn)。springboot2.1.6.RELEASE默認(rèn)導(dǎo)入了Slf4j、logback和log4j,因此你不需要導(dǎo)入日志的相關(guān)jar包就可以使用日志的功能!

 

2、配置文件的編寫(xiě)

  • 每一個(gè)日志的實(shí)現(xiàn)框架都有自己的配置文件。使用slf4j以后,配置文件還是做成日志實(shí)現(xiàn)框架自己本身的配置文 件;
  • log4j的配置文件請(qǐng)參考:https://javacfox.github.io/2019/06/28/Log4j%E6%97%A5%E5%BF%97%E9%85%8D%E7%BD%AE/
  • logback的配置文件請(qǐng)參考:
#指定日志配置文件路徑
# logging.config=classpath:/logback-spring.xml

# 日志文件存放路徑
#logging.path=/spring/log


# 指定日志文件名
# logging.file=my.log

# 歷史日志文件的最大保存量
# logging.file.max-history=100000

# 指定日志打印級(jí)別,可以配置多個(gè)
#logging.level.com.hiberate.orcal_and_hiberate=debug
##
### 日志文件最大空間
##logging.file.max-size=10M

# 日志輸出格式:
# %d表示日期時(shí)間,
# %thread表示線程名,
# %‐5level:級(jí)別從左顯示5個(gè)字符寬度
# %logger{50}表示logger名字最長(zhǎng)50個(gè)字符,否則按照句點(diǎn)分割。
# %msg:日志消息,
# %n是換行符

# 日志控制臺(tái)打印格式
#logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level%logger{50}-%msg%n
#
## 日志輸出的時(shí)間格式
#logging.pattern.dateformat=%d{yyyy-MM-dd HH:mm:ss.SSS}
#
## 日志輸出到文件中的格式
#logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n
#
## 在輸出日志中添加輸出級(jí)別
#logging.pattern.level=%5p
#
#logging.exception-conversion-word=%wEx

感謝各位的閱讀,以上就是“springboot日志功能的詳細(xì)介紹”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)springboot日志功能的詳細(xì)介紹這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI