您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何從commons-logging到slf4j,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
為了讓系統的log實現變成可配置,java的大牛們實現了兩種底層接口規范,1.commons-logging 2.slf4j
一、commons-logging這是一個Apache項目,歷史悠久,基于classloader的。包括spring都在使用這個log底層接口規范
實現原理:我定義1個LogFactory,這個LogFactory可以生產Log
至于使用哪個LogFactory就要根據系統不同的配置參數,所以他就能夠生產出不同廠家的Log
比如說:
commongs-logging在創建LogFactory的時候有這么個順序,
a.首先去判斷jvm配置參數中是否有設置
b.然后在去檢測 META-INF/services/org.apache.commons.logging.LogFactory文件
c.實在找不到就去找用戶 commons-logging.properties 里面的配置
d.最后是在都沒找到的話,那就使用自己的默認實現LogFactoryImpl(LogFactoryImpl這個默認實現比較有意思,他默認可以生產Log4JLogger、Jdk14Logger、Jdk13LumberjackLogger、SimpleLog)
結論:如果使用commons-logging,必須需要配置一個真正的實現log*.jar干活
二、 slf4j全稱為Simple Logging Facade for JAVA,java簡單日志門面 , 類似于Apache Common-Logging,是對不同日志框架提供的一個門面封裝,可以在部署的時候不修改任何配置即可接入一種日志實現方案。但是,他在編譯時靜態綁定真正的Log庫。使用SLF4J時,如果你需要使用某一種日志實現,那么你必須選擇正確的SLF4J的jar包的集合(各種橋接包)。 slf4j是一個日志系統的封裝,對外提供統一的API,不提供日志具體實現
1.slf4j基本包 slf4J-api.jar
2.slf4j橋接具體log實現的包:
log4j:slf4j-log4j12.jar
logback:logback-core、logback- classic
3.也可以把slf4j作為commongs-logging的一種實現,需要引入jcl-over-slf4j.jar(這個里面主要關注是在META-INF/services/org.apache.commons.logging.LogFactory文件中配置了LogFactory實現類:org.apache.commons.logging.impl.SLF4JLogFactory)
三、總結
1.目前市面上真正在用的也就是log4j和logback。都是一個人寫的,據說logback比log4j性能要好很多,下面看看具體說法
LogBack作為一個通用可靠、快速靈活的日志框架,將作為Log4j的替代和SLF4J組成新的日志系統的完整實現。LogBack聲稱具有極佳的性能,“ 某些關鍵操作,比如判定是否記錄一條日志語句的操作,其性能得到了顯著的提高。這個操作在LogBack中需要3納秒,而在Log4J中則需要30納秒。 LogBack創建記錄器(logger)的速度也更快:13微秒,而在Log4J中需要23微秒。更重要的是,它獲取已存在的記錄器只需94納秒,而 Log4J需要2234納秒,時間減少到了1/23。跟JUL相比的性能提高也是顯著的”。 另外,LOGBack的所有文檔是全面免費提供的,不象Log4J那樣只提供部分免費文檔而需要用戶去購買付費文檔。
2.看看SLF4j和具體實現的關系:
3. 用別的日志接口,轉成slf4j的方法
1、commons-loggin,slf4j只是一種日志抽象門面,不是具體的日志框架。
2、log4j,logback是具體的日志框架。
3、一般首選使用slf4j+logback,或者slf4j+log4j,commons-logging+log4j。
看完上述內容,你們對如何從commons-logging到slf4j有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。