log4j - java的日志到底是怎么一回事
黄舟
黄舟 2017-04-17 16:55:57
0
3
489
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(3)
小葫芦

首先,你需要了解一個設計模式:適配器模式。

Java用來記錄日誌的函式庫有很多,例如有JDK自帶的Logger、Log4j、Logback,它們之間互相不相容,通常情況下,我們寫程式碼的時候選用其中一個就可以了。

但是,如果有一天你寫的程式碼開源了,要給別人使用,那麼問題就來了,該使用哪個日誌庫?當然不能隨便選用一個了,因為你不知道使用你的開源程式庫的人用的哪個日誌框架。這時候你想無論別人使用哪個日誌框架,你都可以相容,這時候就要使用commons-logging或slf4j了。所以一般開源框架都不會使用具體的日誌框架,而是用commons-logging或slf4j處理日誌,這樣可以根據使用者使用的具體日誌框架來記錄日誌,例如Hibernate用的是slf4j(不過好像最新版本用的是JBOSS的轉接器了)、Spring用的是commons-logging。

Java在日誌這塊不像JDBC,JDBC有一套共同的標準API,無論你連接Oracle、MySQL,API介面都是一樣的。但是日誌庫JDK Logger、Log4j、Logback是互相不相容的,沒有共同的Interface,所以commons-logging、slf4j透過適配器模式,抽像出來一個共同的接口,然後根據使用的具體日誌框架來實現日誌。

總結一下,就是JDK Logger、Log4j、Logback是具體的日誌框架的實現,commons-logging、slf4j是解決日誌框架之間不相容而抽像出來的適配器介面。

最後,這篇部落格是我對slf4j的原始碼解析,希望對你有幫助:http://blog.csdn.net/xiao__gui/article/details/32695647

巴扎黑

有的是接口,有的是實現。 slf4j是log4j的升級版,都實作commons-logging。

小葫芦

slf4j是一個log的facade,你可以選擇底層是使用commons-logging,log4j,logback等具體的實作。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!