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
设置合理。