摘要:的橋接器這個橋接器將所有日志委派給的原生實現,直接實現了的接口,因此使用與的搭配也暗示了嚴格的零內存計算溢出未完待補充
起手式
忘了什么時候聽老師說過,牛逼的公司只管定義接口,屌絲廠商實現接口,類似 JDBC 的實現便是如此,用在 slf4j, 總覺得有些類似,本來 SUN 有機會在需求產生之前設計一套漂亮的日志框架來一統天下,可惜偏偏要拖到 JDK1.4, 而這套原生的日志框架也沒有足夠漂亮,而之前早已經經過市場考驗的日志框架也在不斷持續的改進,log4j,logback, common-logging 等等已經在許多系統中長久駐足。
翻到Java中的日志框架史,看到下面有趣的文字
正文 Apache user manual 選譯最早出現的日志框架是apache提供的log4j,使用最為廣泛,成為了Java日志的事實上的標準;然而當時Sun公司在jdk1.4中增加了JUL(java.util.logging),企圖對抗log4j,于是造成了混亂,當然此時也有其它的一些日志框架的出現,如simplelog等,簡直是亂上加亂。
解決這種混亂的方案出現了:抽象出一個接口層:于是開源社區提供了commons-logging,被稱為JCL。抽象時參考了log4j、JUL、simplelog,對它們進行了適配或轉接,這樣就一統江湖了。
看上去現在已經非常完美了,但好景不長,log4j的作者(Ceki Gülcü)覺得JCL不夠優秀,他要搞出一套更優雅的出來,于是slf4j就出現了,并且親自實現了一個親子——logback(有點,老子又回來了的感覺^_^)。好吧,確實更優雅了,但混亂局面又出現了,之前使用JCL的怎么辦呢,于是Ceki Gülcü在slf4j又對JCL作了橋接轉換,然而事情還沒完,Ceki Gülcü又回來拯救自己的“大阿哥”——log4j,于是log4j2就誕生了,同時log4j2也加進了slf4j體系中。
PS:SLF4J是在Compile綁定實現的,而JCL是Runtime時綁定的。
SLF4J ( The simple logging facade for java ) 作為諸多日志框架的門面或者抽象,這些框架包括java.util.logging, logback 和 log4j. slf4j 允許終端用戶在部署系統時想使用插件一樣來選擇使用不同的日志框架。
關于如何綁定一個日志框架創建工程,將 slf4j-api-1.7.13.jar 加入 class path , 以下程序編譯運行
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } }
控制臺輸出
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
可見單純的 slf4j 只是定義了一套接口,以及其他日志框架的轉接器
現在我們為 slf4j 綁定最簡單的實現,在 classpath 加入 slf4j-simple-1.7.13.jar
重新編譯運行,控制臺輸出:
0 [main] INFO HelloWorld - Hello World可以綁定的日志框架的橋接 jars
log4j 1.2(一個廣泛使用的日志框架)版本的橋接器,你可以將 log4j.jar 加入classpath
java.util.logging 的橋接器,JDK原生日志框架
NOP 橋接器,靜默丟棄一切日志
一個簡單實現的橋接器,該實現輸出所有事件到 System.err. 只有INFO以及高于該級別的消息被打印,在小型應用中它也許是有用的。
Jakarta Commons Logging 的橋接器. 這個橋接器將SLF4j所有日志委派給 JCL
slf4j 的原生實現,logback 直接實現了 slf4j 的接口,因此使用 slf4j 與 logback 的搭配也暗示了嚴格的零內存計算溢出
未完待補充文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65346.html
摘要:深入學習系列三那些年我們用過的日志框架目前常見的日志框架和中文似乎不太好翻譯有一下幾種即其中,為同一個作者所寫。如前面所述,在才被引入,在這之前,并沒有官方的日志庫供開發者使用。 title: 【Java深入學習系列】三. 那些年我們用過的日志框架date: 2016-10-16 15:32:50 category: java 目前常見的Java日志框架和facades(中文似乎不太好...
摘要:但是考慮到各不相同,所以出現了等日志框架。日志框架只是統一的,其底層的具體的日志記錄工作還是由等承擔。如何選擇和搭配日志系統目前來說,新應用使用是首選,一些老系統中很可能使用的是等。所以若日志沖突時,使用的三方庫只需要相應的實現庫即可。 日志系統的發展 我們日常接觸到的日志系統有很多種,log4j,JUL(jdk自帶),logback等,我們可以直接根據對象的日志API進行使用。但是考...
摘要:本文要來分享給大家程序員最常用的日志框架組件。沒有基礎的同學也不要著急,這套教程覆蓋了目前所有的日志框架,只要你學,就一定用得到,先收藏,以備不時之需。 作為一名Java程序員,我們開發了很多Java應用程序,包括桌面應用、WEB應用以及移動應用。然而日志系統是一個成熟Java應用所必不可少的。在開發和調試階段,日志可以幫...
摘要:想要看級別的信息,你需要在啟動時傳入這個系統屬性使用與日志現在我們可以試驗并更換不同的日志實現,但你的程序代碼可以保持不變。我們要做的是用另一個流行的日志實現來替換掉,比如。又一次,我們必須對我們選的每一個日志實現做配置。 使用slf4j庫作為你的Java應用日志API層有很多好處,這里我會展示一小部分關于如何使用和配置它的例子。 你可以把slf4j想成一個Java的接口,然后你需要實...
閱讀 1816·2019-08-30 15:55
閱讀 1007·2019-08-26 11:57
閱讀 509·2019-08-26 11:29
閱讀 3358·2019-08-26 10:49
閱讀 1910·2019-08-23 18:40
閱讀 1749·2019-08-23 16:04
閱讀 3104·2019-08-23 11:01
閱讀 2271·2019-08-23 10:56