微服務架構Day02-SpringBoot日誌slf4j

攻城獅Chova發表於2021-02-12

日誌框架

日誌門面(介面,日誌抽象層 ) 日誌實現
JCL(Jakarta Commons Logging)、slf4j(Simple Logging Facade for Java)、jboss-logging log4j、JUL(java.util.logging)、log4j2、Logback
  • 日誌門面:slf4j
  • 日誌實現:Logback
    SpringBoot選用的是slf4j和Logback

slf4j的使用

  • 如何在系統中使用slf4j:
    1.日誌記錄方法的呼叫,不應該呼叫日誌實現類,應該呼叫日誌抽象層裡面的方法。給系統匯入slf4j的jar和Logback的實現jar。
    2.每一個日誌的實現框架都有自己的配置檔案。使用slf4j以後,配置檔案還是使用日誌實現框架的配置檔案
  • 問題:使用slf4j+logback需要統一轉換日誌記錄,別的框架使用其它日誌框架的需要一起使用slf4j進行輸出:
    1.將系統中的其他框架日誌先替換出去,
    2.用面向slf4j的jar替換原有的日誌框架,
    3.匯入slf4j的jar和Logback的實現jar。

SpringBoot日誌關係

  • SpringBoot底層也是使用slf4j+logback的方式進行日誌記錄
  • SpringBoot將其它日誌都替換成slf4j
  • 如果需要引入其它框架,一定要把這個框架的預設日誌框架依賴移除。
    SpringBoot能自動適配所有的日誌,而且底層使用的是slf4j+logback的方式記錄日誌,引入其它框架的時候,只需要將這個框架依賴的日誌框架排除掉即可。

日誌使用

  • 預設配置
logging.file logging.path Example Description
none (none) 只在控制檯輸出
指定檔名 (none) my.log 輸出日誌到my.log檔案
(none) 指定目錄 /var/log 輸出到指定目錄的spring.log檔案中
  • 指定配置
    給類路徑下放上每個日誌框架指定的配置檔案,SpringBoot就不使用本身預設的配置。
Logging System Customization
Logback logback-spring.xml, logback-spring.groovy, logback.xml or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK(Java Util Logging) logging.properties
  • logback.xml:會直接被日誌框架識別載入
  • logback-spring.xml (推薦):日誌框架不能直接載入日誌配置項,由springBoot解析日誌配置只使用SpringBoot高階功能SpringProfile,就可以通過
<springProfile name="dev"></springProfile>

設定指定某段配置只在某個環境下生效

切換日誌框架

  • 可以按照slf4j的日誌適配圖進行相關的切換-替換加引入
  • 切換log4j2:由於SpringBoot底層有log4j2的框架,只要在依賴中排出之前的starter-logging依賴。

相關文章