2025.6.23
这个配置段定义了 Logback 的文件日志输出策略,具体含义如下:
整体作用
配置一个会自动滚动的日志文件输出器,当日志文件达到指定大小或时间条件时,自动创建新文件归档旧日志。
逐行解析
1. <appender>
定义
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
name="FILE"
:给这个输出器命名为FILE
(后续可通过该名称引用)class
:使用RollingFileAppender
类,支持日志滚动(自动分割)
2. 日志文件路径
<file>${LOG_FILE}</file>
${LOG_FILE}
:使用变量定义的路径(如./logs/application.log
)- 作用:当前正在写入的日志文件路径
3. 滚动策略 (RollingPolicy
)
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- 策略类型:基于文件大小 + 时间的滚动策略(最常用)
关键参数
参数 | 值 | 说明 |
---|---|---|
fileNamePattern |
${LOG_PATH}/application.%d{yyyy-MM-dd}.%i.log |
滚动后的文件名格式: • %d{yyyy-MM-dd} :日期• %i :序号(同一天内按序号递增) |
maxFileSize |
50MB |
单个日志文件最大 50MB |
maxHistory |
7 |
保留最近 7 天的日志文件 |
4. 日志格式 (encoder
)
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
占位符 | 示例 | 说明 |
---|---|---|
%d{...} |
2023-08-20 14:30:45.123 |
精确到毫秒的时间戳 |
[%thread] |
[main] |
当前线程名 |
%-5level |
INFO |
日志级别(左对齐,5字符宽度) |
%logger{36} |
c.h.service.UserService |
日志来源类名(最多36字符) |
%msg |
User login success |
实际日志内容 |
%n |
- | 换行符 |
实际效果示例
生成的日志文件
./logs/
├── application.log # 当前正在写入的日志
├── application.2023-08-20.0.log # 滚动后的归档日志(按日期+序号)
└── application.2023-08-19.0.log
单条日志输出示例
2023-08-20 14:30:45.123 [http-nio-8080-exec-1] INFO c.h.service.UserService - User login success
生产环境 vs 开发环境
- 生产环境:通常会增加限制(如
maxFileSize=100MB
,maxHistory=30
) - 开发环境:保留默认值即可(如你的配置中注释提到的 "生产环境会覆盖这些参数")
常见问题
-
为什么需要滚动日志?
- 避免单个文件过大影响读写性能
- 便于按时间归档和清理旧日志
-
%i
什么情况下会递增?
当同一天内日志文件超过maxFileSize
时,序号自动+1(如application.2023-08-20.0.log
→.1.log
) -
如何修改日志路径?
调整${LOG_PATH}
变量的值即可(如改为/var/logs/myapp
)