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

时间:2019-04-19 09:13:50

标签: java logback

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

<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的调试信息:enter image description here

1 个答案:

答案 0 :(得分:1)

尝试删除<file>logs/error-%d</file>。您可以使用以下格式:%d{yyyy-MM-dd}