【问题标题】:Logback does not resolve file name date pattern on creating log filesLogback 在创建日志文件时无法解析文件名日期模式
【发布时间】:2019-04-19 09:13:50
【问题描述】:

我有一个像这样的简单附加程序:

<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <append>true</append>
    <file>logs/error-%d</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/archive/error-%d.gz</fileNamePattern>
        <MaxHistory>30</MaxHistory>
    </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-%d 而不是logs/error-2019-04-19。我也尝试使用模式logs/error-%d{yyyy-MM-dd},但它会生成相同的文件名,并且不会将日期模式替换为当前日期。

如何强制 Logback 创建具有当前日期而不是占位符的文件?

Logback 的调试信息:

【问题讨论】:

    标签: java logback


    【解决方案1】:

    尝试删除 &lt;file&gt;logs/error-%d&lt;/file&gt; 。您可以使用这种格式:%d{yyyy-MM-dd}

    【讨论】:

    • 我无法删除&lt;file&gt;logs/error-%d&lt;/file&gt;,因为我需要在压缩文件时将文件滚动到另一个目录。我还尝试了%d{yyyy-MM-dd},它会生成带有error-%d{yyyy-MM-dd} 名称的文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2013-09-25
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多