国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Java平臺下日志的那些事
Linux編程

作者丨張豐哲
https://www.jianshu.com/p/127d3201921b


日志框架漫談

Java平臺下存在很多日志框架,比如JUL(java.util.logging),JCL(Apache Commons Logging),Log4j,Log4j2,Logback,SLF4j,jboss-logging等。

java平臺下日志框架的發(fā)展,經(jīng)歷了具體的日志實(shí)現(xiàn),后來發(fā)展為日志門面 日志實(shí)現(xiàn)。

java日志

當(dāng)我們在開發(fā)的時候,應(yīng)該使用日志門面提供的api,而不是直接使用具體的日志實(shí)現(xiàn)。

打個比方,如果我們使用slf4j log4j這套組合,那么配置提供log4j的配置(比如log4j.xml),使用slf4j提供的日志api即可;也就是說,每個日志實(shí)現(xiàn)框架都有自己的日志配置文件,即便使用日志門面后,依然要提供各自的配置文件。(也就是日志門面只是實(shí)現(xiàn)了api的適配,而沒有進(jìn)行日志配置的統(tǒng)一規(guī)范)

當(dāng)前最流行的日志門面是slf4j了,我們就以這個為例來具體分析下,主要進(jìn)行2點(diǎn)分析:

第一:slf4j是如何對各個日志實(shí)現(xiàn)進(jìn)行適配?

第二:如何在項(xiàng)目中進(jìn)行日志的統(tǒng)一使用?

slf4j logback

slf4j log4j

上面2個圖分別是:slf4j logback和slf4j log4j這2套日志組合的方式圖解說明。

首先,我們來說第一個問題,sl4j如何和其他日志實(shí)現(xiàn)框架適配的問題。

很簡單,我們只需要看圖中的左側(cè)部分,提供相應(yīng)的jar即可(有的除了具體的日志實(shí)現(xiàn)外,還需要提供額外的適配jar包)。

其次,我們要注意一個問題,由于在項(xiàng)目開發(fā)中,不可避免需要引入其他依賴,比如Spring默認(rèn)使用的是commons-logging(即JCL),而Hibernate默認(rèn)使用的是jboss-logging,那么問題就來了,我們?nèi)绾谓y(tǒng)一日志記錄的方式?

上圖中的右側(cè)部分就揭示了方法,打個比方,如果我們依賴Spring,雖然Spring默認(rèn)使用的是JCL,要想在項(xiàng)目中統(tǒng)一使用slf4j logback的話,很簡單,我們先排除掉 JCL的依賴,然后再引入jcl-over-slf4j.jar的依賴即可。(其實(shí)就是在偷梁換柱,jcl-over-slf4j.jar和JCL在包名/類名/方法名上完全一致,只不過jcl-over-slf4j在內(nèi)部調(diào)用的是slf4j的api而已,這樣既可以避免Spring報(bào)錯,又可以將Spring日志記錄方式加以改變!)

看SpringBoot如何對日志進(jìn)行統(tǒng)一處理

SpringBoot能自動適配所有的日志,而且底層使用的是slf4j logback的方式記錄日志,引入其他框架的時候,只需要把這個框架依賴的日志框架排除掉即可。

SpringBoot很聰明,它已經(jīng)把一些日志適配依賴都引入進(jìn)來了,下面我們具體分析。

springboot日志依賴

我想通過上圖的日志依賴關(guān)系,你就會明白springboot的良苦用心了!

上文說過Spring默認(rèn)的日志依賴是JCL,而SpringBoot肯定是依賴Spring的,根據(jù)上文理論,自然是需要排除掉JCL的依賴的,我們來看下面的:

springboot依賴spring

spring已經(jīng)排除掉JCL依賴

SpringBoot日志使用

關(guān)于SpringBoot日志的使用上,主要指出下面幾點(diǎn):

第一:全局的一些常用配置,如格式/路徑/級別

第二:使用@Slf4j來進(jìn)行日志處理

第三:日志的profile功能

第四:切換日志框架

在application.properties中進(jìn)行日志配置

指定日志配置文件路徑 logging.config=classpath:logback.xml 

采用logging.path的方式指定日志路徑

指定日志級別,要么在application.properties中直接指定:

logging.level.x.y.z=info

要么在logback.xml中配置。

關(guān)于日志的具體配置,這里不詳細(xì)介紹,網(wǎng)上有很多資料大家可以參考。

日志的具體使用,相信大家很清楚,基本上就是先得到log對象:

private  final Logger logger = LoggerFactory.getLogger(XXX.class);

不過為了簡化,lombok給我們提供了注解進(jìn)行日志輸出。(需要idea有l(wèi)ombok的插件,還有需要lombok的依賴)

lombok支持

提供注解,直接使用log

下面我們再來簡單談一下日志的profile功能,要想支持profile功能也很簡單,比如不要在叫l(wèi)ogback.xml,而是logback-spring.xml,這樣日志配置將由springboot來進(jìn)行處理,就可以使用到profile功能。

logback-spring.xml

最后,我們再說一下,如果不想使用springboot默認(rèn)支持的slf4j logback的方式,而是slf4j xxx呢?

很簡單,根據(jù)上文理論,第一,排除依賴(logback);第二,加入依賴(log4j);第三,加入具體日志配置即可(log4j.xml)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring Boot 日志
丟人不!還用System.out.println('''');太 Low了!
log4j的有關(guān)jar包總結(jié)
Spring MVC集成slf4j-logback(轉(zhuǎn):http://blog.csdn.net/sadfishsc/article/details/47160213)
Spring Boot 日志記錄 SLF4J
SpringBoot里slf4j日志功能的默認(rèn)實(shí)現(xiàn)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服