Spring Boot中logback TimeBasedRollingPolicy日志不滚动问题排查
Logback TimeBasedRollingPolicy 不生效问题排查(Spring Boot 2.1.1.RELEASE)
先看你提供的logback.xml配置,确实存在几个明显的错误,这大概率是导致日志既不滚动也不备份的核心原因:
一、配置中的直接错误
Appender 引用拼写不匹配
- 你的
root节点里写了<appender-ref ref="Spring-Appender" />,但实际定义的对应Appender名称是Spring-logAppender,名称不一致会导致根日志根本没输出到目标文件; - 同样,
org.hibernate的Logger引用了Database-Appender,但你实际定义的是Database-logAppender,这个Logger的日志也无法写入正确的文件。
这类拼写错误会让部分日志流根本没进入配置了滚动策略的Appender,自然看不到滚动效果。
- 你的
文件名模板末尾存在多余空格
两个TimeBasedRollingPolicy的fileNamePattern末尾都多了一个空格:<fileNamePattern>${LOG_ARCHIVE}/Spring.log%d{yyyy-MM-dd}.log </fileNamePattern>这个空格会导致Logback无法正确解析归档文件的命名规则,直接让滚动逻辑失效。
可选注意点:totalSizeCap的生效条件
totalSizeCap需要Logback 1.1.10及以上版本支持,Spring Boot 2.1.1.RELEASE对应的Logback版本是1.2.3,版本是符合要求的,但这个参数需要和maxHistory配合使用,且只会清理超期的归档文件,不影响滚动触发逻辑,所以不是本次问题的核心原因。
二、进一步排查的步骤
如果修正上述错误后仍有问题,可以按以下步骤逐步排查:
- 查看Logback调试日志:你的配置已经开启了
debug="true",启动应用时会输出Logback的初始化细节,仔细检查控制台日志,有没有类似Appender not found、fileNamePattern解析错误这类提示,这些都是定位问题的关键。 - 验证目录权限:确保应用进程对
logs和logs/bkp目录有读写权限,如果权限不足,Logback无法创建归档文件,滚动操作会静默失败。 - 手动触发滚动测试:在测试环境中,可以修改系统时间到次日,或者通过Logback的JMX接口手动触发日志滚动,验证滚动逻辑是否正常工作。
- 确认日志输出目标:检查
Spring.log和Database.log的内容是否在正常更新,避免因为Logger级别配置或其他过滤规则,导致日志根本没写入目标文件。
内容的提问来源于stack exchange,提问作者Satscreate
相关产品推荐
相关产品推荐

