时间戳错误的 Log4j 2 滚动文件

Log4j 2 rolling file with wrong timestamp

我有以下 Roling 文件:

<RollingFile name="mylog"
                 filePattern="${sys:server.output.dir}/logs/mylog_%d{yyyy-MM-dd}.%i.log"
                 ignoreExceptions="false">
        <PatternLayout>
            <Pattern>%d %-5p %c %m%n\n</Pattern>
        </PatternLayout>
        <Policies>
            <OnStartupTriggeringPolicy minSize="100000000" />
            <SizeBasedTriggeringPolicy size="100 MB" />
            <TimeBasedTriggeringPolicy />
        </Policies>
        <DirectWriteRolloverStrategy />
    </RollingFile>

但是我得到了错误的时间戳。

如果日志是在 6 月 24 日 创建的,它被称为 mylog_2019-06-23。1.log 并且它包含来自 24th.

的文件

最后生成的文件以更好地说明:

mylog_2019-06-20.1.log  - generated on 21st at 23:50 - contains logs from 21st

mylog_2019-06-21.1.log  - 22nd at 23:50 - contains logs from whole 22nd

mylog_2019-06-22.1.log  - 23rd at 00:00 - contains logs from 23rd to 7 AM

mylog_2019-06-23.1.log  - 23rd at 23:50 - contains logs from 23rd 7 AM to end of day

mylog_2019-06-23.2.log  - 24th at 00:00 - contains logs from today (24th) until now

我做错了什么? (任何间隔都会发生同样的情况,例如分钟 - 邮票总是关闭一个单位)

所以最后我不得不将 fileName 属性添加到 RollingFile 元素并将策略更改为,它现在可以工作了。 Nomax 只是不限制要保留的文件数量。

副作用是,现在日志首先登录到 mylog.log,当文件翻转时,它被重命名为 mylog_{stamp}.log。

<RollingFile name="myLog"
                     fileName="${sys:server.output.dir}/logs/mylog.log"
                     filePattern="${sys:server.output.dir}/logs/mylog_%d{yyyy-MM-dd}.%i.log"
                     ignoreExceptions="false">
            <PatternLayout>
                <Pattern>%d %-5p %c %m%n\n</Pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB" />
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy fileIndex="nomax"/>
        </RollingFile>