微服務架構Day02-SpringBoot日誌slf4j
阿新 • • 發佈: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,就可以通過
```xml
```
設定指定某段配置只在某個環境下生效
### 切換日誌框架
- 可以按照slf4j的日誌適配圖進行相關的切換-替換加引入
- 切換log4j2:由於SpringBoot底層有log4j2的框架,只要在依賴中排出之前的starter-logging