Log4j2.xml中TimeBasedTriggeringPolicy如何设置滚动日志策略详细说明?
- 内容介绍
- 相关推荐
本文共计1230个文字,预计阅读时间需要5分钟。
Log4j2中的TimeBasedTriggeringPolicy并非到了凌晨就切换,而是依赖filePattern中的日期格式动态生成归档路径,并比较当前时间是否匹配新的周期。例如,若filePattern设置为logs/app-%d{yyy-MM-dd}-%i.log,则按天滚动;若误写为logs/app-%d{yyy-MM}.log,则按月滚动,但日志文件名中缺少日期信息,可能造成归档逻辑错误。
常见错误现象:app-2024-05.log 文件持续写入一整月,第二天仍不生成 app-2024-05-02.log。
-
filePattern中的%d{...}必须包含“最小滚动单位”——比如按天滚动,就得有dd;按小时,就得有HH -
fileName(当前活动文件)不能含动态日期,否则每次启动都可能新建文件,破坏滚动连续性 - 时区默认用 JVM 启动时的本地时区,跨时区部署时务必显式配
timeZone="GMT+8"
为什么加了 TimeBasedTriggeringPolicy 还是不归档?看 DefaultRolloverStrategy 是否限制了归档数
触发策略只决定“什么时候该滚”,真正执行压缩、重命名、删除老日志的是 DefaultRolloverStrategy。
本文共计1230个文字,预计阅读时间需要5分钟。
Log4j2中的TimeBasedTriggeringPolicy并非到了凌晨就切换,而是依赖filePattern中的日期格式动态生成归档路径,并比较当前时间是否匹配新的周期。例如,若filePattern设置为logs/app-%d{yyy-MM-dd}-%i.log,则按天滚动;若误写为logs/app-%d{yyy-MM}.log,则按月滚动,但日志文件名中缺少日期信息,可能造成归档逻辑错误。
常见错误现象:app-2024-05.log 文件持续写入一整月,第二天仍不生成 app-2024-05-02.log。
-
filePattern中的%d{...}必须包含“最小滚动单位”——比如按天滚动,就得有dd;按小时,就得有HH -
fileName(当前活动文件)不能含动态日期,否则每次启动都可能新建文件,破坏滚动连续性 - 时区默认用 JVM 启动时的本地时区,跨时区部署时务必显式配
timeZone="GMT+8"
为什么加了 TimeBasedTriggeringPolicy 还是不归档?看 DefaultRolloverStrategy 是否限制了归档数
触发策略只决定“什么时候该滚”,真正执行压缩、重命名、删除老日志的是 DefaultRolloverStrategy。

