上篇我們學習了《SB實戰19-Spring Boot的外部配置》,本篇我們學習Spring Boot的日志和報告。

4 日志和報告
4.1 日志
日志是對應用運行時進行調試和分析的重要工具。Spring Boot使用SLF4J作為日志的API,Logback、Log4j2、Java Util Logging都可以作為日志提供者,Spring Boot默認使用Logback作為日志提供者。
4.1.1 日志級別配置
我們可以在application.yml文件通過logging.level來配置指定包的日志級別,如:
logging.level.org.springframework.web: DEBUG
設置前:

設置后:

4.1.2 記錄到文件
默認情況下,Spring Boot只會將日志輸出到控制臺,如果想將日志輸出到文件,我們可以通過logging.file.name或者logging.file.path來定制:
logging.file.name: /Users/wangyunfei/log/log.log
logging.file.path: /Users/wangyunfei/log # 默認文件名為spring.log
4.1.3 切換日志提供者
若我們將默認的日志提供者從Logback切換成Log4j2也是很簡單的,和我們前面切換tomcat到jetty類似,但是又有區別,因為很多Spring Boot的Starter都默認了以Logback作為日志提供者,我們需要給每個Starter都exclude太麻煩,我們可以像下面這樣處理:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-log4j2'}configurations { all{ exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' }}
4.2 報告
4.2.1 錯誤報告
Spring Boot為我們在META-INF/spring.factories(位于spring-boot-2.2.x.RELEASE.jar)注冊了失敗分析器:

當應用啟動因為某些原因失敗時,會給我們問題描述和問題的解決方案。如端口沖突:

4.2.2 自動配置報告
當我們在application.yml文件設置debug: true時,控制臺會輸出自動配置報告。報告包含:
- 已使用的自動配置(Positive matches:);
- 未使用的自動配置(Negative matches);
- 已關閉的自動配置(Exclusions);
- 無條件執行的自動配置(Unconditional classes)。

