logback.xml滚动策略配置:如何实现每8小时滚动日志文件
实现Logback每8小时滚动日志的方案
针对你需要将日志从每小时滚动改为每8小时滚动的需求,有一个直接可行的方案:结合TimeBasedRollingPolicy与CronTriggeringPolicy来精准控制滚动时机。
具体配置示例
替换你原有的rollingPolicy配置为以下内容:
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 文件名格式,会以滚动触发时的小时(00/08/16)命名日志文件 --> <fileNamePattern>${DEV_HOME}/archived/server.%d{yyyy-MM-dd_HH}.log</fileNamePattern> <!-- 使用Cron触发策略,指定每8小时触发一次滚动 --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.CronTriggeringPolicy"> <!-- Cron表达式:每天00:00、08:00、16:00触发滚动 --> <cron>0 0 */8 * * ?</cron> <!-- 可选配置:即使当前日志文件为空,到时间也执行滚动 --> <checkHistory>true</checkHistory> </timeBasedFileNamingAndTriggeringPolicy> <!-- 可选配置:设置日志文件保留天数,按需调整 --> <maxHistory>30</maxHistory> </rollingPolicy>
方案说明
- 滚动时机控制:通过Cron表达式
0 0 */8 * * ?,精准指定每天的00:00、08:00、16:00三个时间点触发日志滚动,确保每个日志文件包含连续8小时的日志内容,24小时内恰好生成3份日志文件。 - 文件名对应:
fileNamePattern中的%d{yyyy-MM-dd_HH}会以滚动触发时的小时命名文件,比如08:00触发滚动生成的文件是server.xxxx-xx-xx_08.log,包含00:00到08:00的日志。 - 版本要求:
CronTriggeringPolicy需要Logback Classic版本1.2.0及以上,请确保你的依赖版本满足要求。
内容的提问来源于stack exchange,提问作者Gaurav Dogra
相关产品推荐
相关产品推荐

