Logback 在 Spring Boot 中的详细配置
1. Logback 配置文件
Spring Boot 默认会加载 classpath
下的 logback-spring.xml
(推荐)或 logback.xml
作为 Logback 的配置文件。
推荐使用 logback-spring.xml
,因为 Spring Boot 提供了扩展支持(例如基于 Profile 的配置)。
配置文件位置
- 放在
src/main/resources/
目录下。
2. 基础配置示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds"><!-- 定义变量 --><property name="LOG_PATH" value="./logs" /><property name="LOG_FILE" value="myapp" /><!-- 控制台输出 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 滚动文件输出 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/${LOG_FILE}.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${LOG_FILE}-%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxFileSize>50MB</maxFileSize><maxHistory>30</maxHistory><totalSizeCap>1GB</totalSizeCap></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 日志级别和输出源配置 --><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="FILE" /></root><!-- 指定包或类的日志级别 --><logger name="com.example.demo" level="DEBUG" />
</configuration>
3. 关键配置项说明
Appender(日志输出器)
- ConsoleAppender: 输出日志到控制台。
- RollingFileAppender: 输出到文件并支持滚动(按时间、大小分割)。
SizeAndTimeBasedRollingPolicy
: 根据时间和文件大小滚动。maxFileSize
: 单个文件最大大小。maxHistory
: 保留的历史日志文件数量。totalSizeCap
: 日志文件总大小限制。
Encoder(日志格式化)
<pattern>
定义日志格式,常用占位符:%d
: 日期时间%thread
: 线程名%-5level
: 日志级别(左对齐,宽度5)%logger{36}
: 日志输出者的名称(最长36字符)%msg
: 日志消息%n
: 换行符
Logger 和 Root Logger
<root>
: 根日志配置,所有日志默认继承此配置。<logger>
: 针对特定包或类配置日志级别。
4. Spring Boot 特有功能
通过 application.properties
覆盖配置
在 application.properties
中可以覆盖部分日志配置:
# 设置根日志级别
logging.level.root=INFO
# 设置特定包日志级别
logging.level.com.example.demo=DEBUG
# 日志文件路径
logging.file.path=./logs
logging.file.name=./logs/app.log
按 Profile 配置日志
在 logback-spring.xml
中使用 <springProfile>
实现多环境配置:
<springProfile name="dev"><root level="DEBUG"><appender-ref ref="CONSOLE" /></root>
</springProfile><springProfile name="prod"><root level="INFO"><appender-ref ref="FILE" /></root>
</springProfile>
5. 高级配置
异步日志
使用 AsyncAppender
提升性能:
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender"><appender-ref ref="FILE" /><!-- 队列大小,超出此值会丢弃 TRACE/DEBUG 日志 --><queueSize>256</queueSize>
</appender>
彩色日志输出
在 ConsoleAppender
中启用颜色:
<encoder><pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%-5level) %clr(${PID}){magenta} --- [%thread] %clr(%logger{36}){cyan} : %msg%n</pattern>
</encoder>
6. 常见问题解决
配置文件未生效
- 确认文件名是
logback-spring.xml
且位于src/main/resources
。 - 检查是否有其他日志框架(如 Log4j2)冲突,排除相关依赖。
日志文件未滚动
- 检查
RollingFileAppender
配置,确保路径和文件名合法。 - 确保
maxHistory
和totalSizeCap
设置合理。