日志組件三:日志接口與日志實現框架


  前面介紹了log4j和log4j2這兩種日志的實現,但是在具體使用中,它們一般不會單獨出現,而是與日志門面結合使用;但是在我們眾多的業務系統中,由於開發者或者團隊不同,日志實現與日志接口的選型也是五花八門,這篇文章就是來整理下日志實現與日志框架之間的組合。主要參考:https://my.oschina.net/pingpangkuangmo/blog/406618

 

一、日志組件概念

兩種日志接口:commons-logging、slf4j

四種日志實現:logging,log4j1、log4j2、logback

1、日志接口的作用

  目前一統江湖的就是apache的commons-logging和slf4j,他兩的作用就是提供統一的接口,而具體的日志實現交給底層綁定的具體的日志實現框架。這樣一來,我們的業務系統中可以靈活的更換不同的日志實現,並且可以不需要去改動代碼。

  對於開發者而言,每種日志都有不同的寫法。如果我們以實際的日志框架來進行編寫,代碼就限制死了,之后就很難再更換日志系統,很難做到無縫切換。

2、jar包的對應:

logging:jdk自帶的日志實現,簡稱jul(java-util-logging)

log4j1:log4j

log4j2:log4j-api(定義的api)、log4j-core(api的實現)

logback:logback-core(logback的核心包)、logback-classic(logback實現了slf4j的API)

commons-logging簡稱jcl

         commons-logging(commons-logging的原生全部內容)

         log4j-jcl(commons-logging到log4j2的橋梁)

         jcl-over-slf4j(commons-logging到slf4j橋梁)

slf4j:這個框架比較復雜,在整個日志組件中起到了一個中轉站的作用

a、使用slf4j的api編程,底層用其他具體的實現:

slf4j-jdk14:slf4j到jdk-logging的橋梁

slf4j-log4j12:slf4j到log4j1的橋梁

log4j-slf4j-impl:slf4j到log4j2的橋梁

logback-classic:slf4j到logback的橋梁

slf4j-jcl:slf4j到commons-logging的橋梁

b、如使用log4j的api編程,但最終輸出通過logback來實現,這樣的話就必須先將log4j轉交給slf4j,再通過slf4j轉交給logback

jul-to-slf4j:jdk-logging到slf4j的橋梁

log4j-over-slf4j:log4j1到slf4j的橋梁

jcl-over-slf4j:commons-logging到slf4j的橋梁

二、組件集成

集成這塊的業務代碼中打印日志都是統一的格式,這也是日志接口為我們帶來的便利,所以打印日志不進行介紹,主要是不同組合之間的jar包依賴,我們重點觀察pom文件的配置

1、log4j

2、log4j2

3、logback

這里出現了slf4j相關的jar包,其實logback官網的使用方式,就是和slf4j集成起來的,Logger、LoggerFactory都是slf4j的接口和類

4、commons-logging與jul集成

 

5、commons-logging與log4j1集成

6、commons-logging與log4j2集成

 

7、commons-logging與logback集成

8、slf4j與jdk-logging集成

9、slf4j與log4j1集成

10、slf4j與log4j2集成

 

11、slf4j與logback集成

 

三、jar包沖突說明

1、jul-to-slf4j與slf4j-jdk14沖突

jul-to-slf4j: jdk-logging切換到slf4j

slf4j-jdk14:slf4j切換到jdk-logging

2、log4j-over-slf4j與slf4j-log4j12沖突

log4j-over-slf4j:log4j1切換到slf4j

slf4j-log4j12:slf4j切換到log4j1

3、jcl-over-slf4j與slf4j-jcl沖突

jcl-over-slf4j:commons-logging切換到slf4j

slf4j-jcl:slf4j切換到commons-logging  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM