You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RollingFileAppender滚动日志时间戳异常,求触发策略正确组合方案

问题分析与解决方案

你的问题核心在于Logback默认用滚动操作发生的时间生成日志文件名中的%d时间戳,而非日志文件实际开始记录的时间,这就导致启动触发滚动时,时间戳和日志实际起始时间不匹配,甚至出现用结束时间当文件名的情况。

调整后的正确配置

<RollingFile name="RollingFile">
    <FileName>${LOG_DIR}system.log</FileName>
    <FilePattern>${LOG_DIR}system%d{yyyy-MM-dd HH.mm.ss}.log.zip</FilePattern>
    <JsonLayout compact="true" eventEol="true" />
    <Policies>
        <OnStartupTriggeringPolicy />
        <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
        <!-- 添加基础时间触发策略,协同其他策略工作 -->
        <TimeBasedTriggeringPolicy />
    </Policies>
    <DefaultRolloverStrategy fileIndex="nomax">
        <!-- 关键设置:用日志文件的创建时间(起始时间)生成时间戳 -->
        <TimeBasedFileNamingAndTriggeringPolicy useCurrentTimeForFileNaming="false" />
    </DefaultRolloverStrategy>
</RollingFile>

关键配置说明

  • TimeBasedTriggeringPolicy:作为时间滚动的基础策略,和OnStartupTriggeringPolicy、CronTriggeringPolicy兼容,确保滚动逻辑的时间维度一致性。
  • useCurrentTimeForFileNaming="false":强制Logback使用日志文件的创建时间(即该文件开始记录日志的时间)填充FilePattern中的%d,彻底解决时间戳和实际日志时间段不匹配的问题。
  • 如果需要更清晰的归档结构,可以把FilePattern调整为${LOG_DIR}system%d{yyyy-MM-dd}_%d{HH.mm.ss}.log.zip,先按天分组,再附加启动时间,方便后续日志检索。

内容的提问来源于stack exchange,提问作者wlfbck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:36:21