SpringBoot中的日誌框架SLF4J和logbck是什麼關係

日誌框架

日誌對一個web系統非常重要,系統運行狀況,錯誤排查,性能監控等都離不開日誌。而選擇一個合適的日誌框架則需要綜合考慮。業界有很多日誌框架:

 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....

就在我寫這篇博客的時候,谷歌發佈了開源java日誌框架Flogger,聲稱在性能擴展性等方面非常出色。原文

日誌框架分類:

​ 做過JDBC開發的同學都知道,我們是面向接口編程,具體的實現由數據庫廠家去做,我們只需要引入相應驅動即可。同樣,日誌框架也是類似。

日誌接口(抽象層) 日誌實現
JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging Log4j JUL(java.util.logging) Log4j2 Logback
  • 表格左側是日誌接口,右側是日誌實現。其中JCL在2004年已經停止維護,jboss-logging我們開發使用較少,也標了橫線。右側JUL是java工具包自帶的一個日誌框架。Log4j2則是Apache的一個開源項目,表現也很出色。而SLF4j正是SpringBoot中使用的日誌接口。實現層SpringBoot使用的是Logback

  • 有趣的時,SLF4jlogback的作者是同一個人Ceki GulcuCeki最早寫了Log4j,後來改進了一版就是Logback,他自然明白麪向接口編程的重要性,所以寫了SLF4j這套接口,使用者編程時只需要面向接口開發,如果升級改造,只需替換對應的實現jar包即可。同時由於SLF4j表現非常出色,很多日誌實現都針對SLF4j開發了實現jar包。

在這裏插入圖片描述

說明:綠色層表示我們應用層,我們開發時,直接調用SLF4J相關API,具體實現我們不用關心,如果用logback,則導入logback相關jar包,如果是使用log4j,則導入slf4j-log4.jar(log4j針對SLF4J開發的實現jar包)。這樣的好處是,在分佈式系統和由於歷史遺留問題導致使用的日誌框架不同時,編程代碼不用動,只需要替換相應的實現jar包即可。詳見SLF4官網

有關SpringBoot中日誌框架的使用,見我下一篇文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章