前置知识:
推荐阅读:
(Java日志系列到这篇算是完结了吧,完结撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。)
logging-starter概述
SpringBoot使用日志功能依赖于
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
实际上,不需要导入这个依赖,因为springboot的核心spring-boot-starter存在对spring-boot-starter-logging的传递依赖。

jul-to-slf4j
:将JUL转为SLF4J(使用SLF4J作为日志门面)log4j-to-slf4j
:将LOG4J2日志门面转为SLF4Jlogback-classic
:使用logback作为默认日志实现
SpringBoot 2.0 之前还会有一个log4j-over-slf4j
用来转换log4j,2.0之后就取消了对log4j的支持。(虽然可以通过starter使用log4j,但已经不推荐了)
可以看出,SpringBoot使用SLF4J作为日志门面,logback作为默认日志实现。
如果是其他日志门面和日志框架会自动桥接至SLF4J。
日志相关配置
SpringBoot配置
这里使用properties语法,yaml也只是转换一下格式
# 设置自定义logger的日志级别
logging.level.com.rhett.FileLogger=trace
# 设置console appender的pattern
logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] --- %m%n
# 指定日志文件存放的目录,默认的文件名是spring.log
logging.file.path=logs/springboot/
# 设置file appender的pattern
logging.pattern.file=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] --- %m%n
指定配置
如果想配置一些高级功能,可以需要导入具体某个日志框架的配置,SpringBoot会自动查找遵循如下命名的配置文件:
日志实现 | 文件命名 |
---|---|
Logback | logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy |
Log4j2 | log4j2-spring.xml , log4j2.xml |
JUL | logging.properties |
对于logback来说,logback-spring还可以使用profile功能:
logback.xml
:直接就被日志框架识别了;logback-spring.xml
:日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot的Profile功能
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<springProfile name="dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
</springProfile>
<springProfile name="test">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern>
</springProfile>
</layout>
</appender>
在springboot配置中切换profile环境:
spring.profiles.active=dev
将日志实现切换为log4j2
禁用logback、启用log4j2,然后就可以正常使用log4j2了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 禁用logback-->
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/springboot%e6%97%a5%e5%bf%97%e6%a1%86%e6%9e%b6%e7%9a%84%e4%bd%bf%e7%94%a8/