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

Logback创建日志文件时无法解析文件名日期模式求助

解决Logback RollingFileAppender日期占位符不替换的问题

首先,问题的核心在于:RollingFileAppender的<file>属性本身不支持解析日期占位符%d——这个属性是用来指定当前活动日志文件的固定名称,日期滚动的命名逻辑完全由TimeBasedRollingPolicy负责处理归档文件。

正确配置方案

如果你希望当前活动日志文件和归档文件都带有日期,可以按照以下两种方式调整配置:

方案1:移除<file>标签,让TimeBasedRollingPolicy自动管理活动文件

这是最简洁且推荐的方式:当不指定<file>时,Logback会根据fileNamePattern自动生成当前活动日志的名称(不带压缩后缀),滚动触发时再将其归档为带压缩后缀的文件。修改后的配置如下:

<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <append>true</append>
    <!-- 移除原来的<file>标签,由rollingPolicy自动生成活动文件名 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 归档文件的路径+命名规则,明确指定日期格式 -->
        <fileNamePattern>logs/archive/error-%d{yyyy-MM-dd}.gz</fileNamePattern>
        <!-- 注意标签名是小写的maxHistory,原配置的MaxHistory大小写错误会导致参数失效 -->
        <maxHistory>30</maxHistory>
        <!-- 可选:让Logback自动创建不存在的父目录 -->
        <createParentDirs>true</createParentDirs>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>[%date{ISO8601}] [%X{requestId}] [%logger{0}] %msg%ex%n</Pattern>
    </encoder>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
            <marker>MY_MARKER</marker>
        </evaluator>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

配置后效果:

  • 当前活动日志文件会是logs/error-2019-04-19(无.gz后缀)
  • 当日志滚动触发时(比如每天凌晨),该文件会被移动到logs/archive/目录并压缩为error-2019-04-19.gz
  • 同时自动生成新的当日活动日志文件logs/error-2019-04-20

方案2:保留<file>但使用动态文件名(不推荐)

如果一定要通过<file>指定带日期的活动文件,需要借助自定义扩展或TurboFilter实现动态文件名解析,但这种方式复杂度高,还容易引发滚动逻辑异常,因此不推荐使用。

额外注意事项

  • 原配置中的<MaxHistory>标签大小写错误,正确标签名是<maxHistory>(全小写),否则Logback无法识别该参数,不会自动清理超过30天的旧日志。
  • 确保logs/和logs/archive/目录存在,或者添加<createParentDirs>true</createParentDirs>让Logback自动创建所需目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:05:33