上篇我们学习了《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)。