日誌框架
日誌門面(介面,日誌抽象層 ) |
日誌實現 |
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依賴。