日志 log4j logback log4j2 slf4j jdk-logging commons-logging 介紹

說到日志,不得不提一下Ceki Gülcü,這個牛逼到爆的程序員十分的犀利,因為 log4j、logback,log4j2,slf4j 都是他寫的,log4j在前些年有多牛逼,這個就不用我說了(log4j之前差點成為SUN公司JDK中的一部分),現(xiàn)在logback是spring boot默認的日志框架,log4j2是目前性能最好的日志框架。Ceki 這個牛逼的程序員,真是我崇拜的大神。
slf4j又是什么呢?其實是當(dāng)時日志的框架有很多,不僅有l(wèi)og4j還有jdk-logging等其他日志框架,Ceki 覺得我怎么不再寫個抽象層,把這些日志實現(xiàn)都屏蔽?然后這個大佬,就寫了一層日志的抽象層框架,就是slf4j的起源。

各種日志包介紹

1、log4j
  • log4j:log4j1的全部內(nèi)容,2012年5月更新的1.2.17為最新版,相當(dāng)多的舊系統(tǒng)現(xiàn)在依然使用。
2、logback
  • logback-core:是基礎(chǔ)模塊,為日志的基礎(chǔ)。
  • logback- classic:是log4j的一個 改良版本。此外logback-classic完整實現(xiàn)SLF4J API使你可以很方便地更換成其它日志系統(tǒng)如log4j或JDK14 Logging。
  • logback-access:訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能。
3、log4j2

官網(wǎng):https://logging.apache.org/log4j/2.x
異步記錄器的吞吐量比Log4j 1.x和Logback高18倍(官方數(shù)據(jù)),延遲低。

  • log4j-core: 核心實現(xiàn)包,日志的基礎(chǔ)
  • log4j-api:是log4j的API接口,可以與log4j-core一起使用,也可以使用其他的日志實現(xiàn),例如logback實現(xiàn),相比slf4j還有其他優(yōu)點,例如:支持記錄方式不止是字符串,有更多的記錄方式等等。
  • log4j-web:Web項目使用
  • log4j-jcl:log4j到commons-logging的橋梁
4、JUL(java.util.logging)

Java提供了自己的日志框架,類似于Log4J,但是API并不完善,對開發(fā)者不是很友好,而且對于日志的級別分類也不是很清晰。

  • jul-to-slf4j:jdk-logging到slf4j的橋梁
5、JCL(Jakarta Commons-Logging)

Jakarta Commons Logging和SLF4J非常類似,也是提供的一套API來掩蓋了真正的Logger實現(xiàn)。便于不同的Logger的實現(xiàn)的替換,而不需要重新編譯代碼。缺點在于它的查找Logger的實現(xiàn)者的算法比較復(fù)雜,而且當(dāng)出現(xiàn)了一些class loader之類的異常時,無法去修復(fù)它。

  • commons-logging:commons-logging所有內(nèi)容
  • commons-logging-api:commons-loggingAPI接口
  • jcl-over-slf4j
6、slf4j

如果你開發(fā)的是類庫或者嵌入式組件,那么就應(yīng)該考慮采用SLF4J,因為不可能影響最終用戶選擇哪種日志系統(tǒng)。在另一方面,如果是一個簡單或者獨立的應(yīng)用,確定只有一種日志系統(tǒng),那么就沒有使用SLF4J的必要。

  • slf4j-jdk14:slf4j到j(luò)dk-logging的橋梁
  • slf4j-log4j12:slf4j到log4j1的橋梁
  • log4j-slf4j-impl:slf4j到log4j2的橋梁
  • logback-classic:slf4j到logback的橋梁
  • slf4j-jcl:slf4j到commons-logging的橋梁

日志集成配置

1、commons-logging與其他日志框架集成
1) commons-logging與jdk-logging集成:

需要的jar包:
commons-logging

2) commons-logging與log4j1集成:

需要的jar包:
commons-logging
log4j

3) commons-logging與log4j2集成:

需要的jar包:
commons-logging
log4j-api
log4j-core
log4j-jcl(集成包)

4) commons-logging與logback集成:

需要的jar包:
logback-core
logback-classic
slf4j-api、jcl-over-slf4j(2個集成包,可以不再需要commons-logging)

5) commons-logging與slf4j集成:

需要的jar包:
jcl-over-slf4j(集成包,不再需要commons-logging)
slf4j-api

2、slf4j與其他日志框架集成
1)slf4j與jdk-logging集成:

需要的jar包:
slf4j-api
slf4j-jdk14(集成包)

2)slf4j與log4j1集成:

需要的jar包:
slf4j-api
log4j
slf4j-log4j12(集成包)

3)slf4j與log4j2集成:

需要的jar包:
slf4j-api
log4j-api
log4j-core
log4j-slf4j-impl(集成包)
log4j-slf4j18-impl(集成包)
這個地方有個坑,由于SLF4J綁定的兼容性中斷,從版本2.11.1開始,提供了兩個SLF4J到Log4j適配器。

4)slf4j與logback集成:

需要的jar包:
slf4j-api
logback-core
logback-classic(集成包)

5)slf4j與commons-logging集成:

需要的jar包:
slf4j-api
commons-logging
slf4j-jcl(集成包)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容