天天看點

Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作

學習資料引用

為什麼使用 SLF4J 而不是 Log4J 來做 Java 日志

SLF4J和Logback和Log4j和Logging的差別與聯系

B站大佬視訊

架構之間基礎關系

在搜集的資料中,比較流行的java架構抽象層有如下幾種

  • JUL(java.util.logging)

    官方日志架構,spring底層預設架構

  • log4j(log for java)

    開源架構

  • SLF4J(simple logging facade for java)

    springboot底層日志預設架構

日志實作由如下幾種

  • log4j
  • JUL
  • -log4j2(Apache公司所寫,沒有合适的适配層)
  • logback(SLF4J,log4j,logback出自一人之手,适配性是最好的)

架構實作

官方文檔

Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作

在log4j和JUL出來的時候,還并沒有出現SLF4J,是以中間會有一層适配層,來幫助程式調用API

調用的始終是SLF4J的方法,不過是适配層來實作SLF4J抽象層,在實作過程中,調用了實作類的API

架構切換

首先還是官方的切換架構說明文檔

官方的切換架構說明文檔

Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作

其他架構底層例如是JUL,會有類似适配層的.jar(這裡指的就是jcl-over-sef4j.jar),他們會把JUL接口轉成SLF4J的

當需要把SLF4J的實作從logback轉成log4j的時候,因為會引入适配層,是以不再需要把log4j的遺留接口轉換成SLF4J接口

logback轉log4j具體實作

logback各方面比log4j更為強大,這裡隻是單純進行練習

首先看log友善的依賴

Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作
Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作

這裡可以觀察到依賴關系

首先應該将logback依賴排除掉

對于log4j-to-slf4 因為我們原本準備使用log4j 這裡邏輯上應該将其移除,但是轉為slf4也不會對結果産生影響

最後添加适配層的依賴,并加入相應的配置檔案l檔案

Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作
Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作

log4j.properties

### set log levels ###
log4j.rootLogger = debug ,  stdout ,  D ,  E

### 輸出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} =====================%5p %c{1}:%L - %m%n
           

這裡加了一串等号 為檢驗下面是否得到了期望效果

Java SpringBoot 日志架構基礎以及如何更換日志架構學習學習資料引用架構之間基礎關系logback轉log4j具體實作

這樣即達到了轉換實作類的效果,雖然系統調用的始終是SLF4J,但是實作架構就改變了