首页 > 解决方案 > log4j2 RollingFileAppender CronTriggeringPolicy 抛出 NoSuchFileException

问题描述

我使用 log4j2 2.7 版本,并且我有 log4j2 配置的 appender,应该每分钟翻转一次:

<Appenders>
    <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
        <PatternLayout pattern="${LOG_PATTERN}"/>
    </Console>
    <RollingFile name="File" fileName="C://api.log"
                 filePattern="C://ssvp-api.log//api.%d{yyyyMMdd.HHmm}.log">
        <PatternLayout pattern="${LOG_PATTERN}"/>
        <Policies>
            <SizeBasedTriggeringPolicy size="50 MB"/>
            <CronTriggeringPolicy schedule="0 0/1 * * * ?"/>
        </Policies>
    </RollingFile>

</Appenders>

但由于某些未知原因,我在日志翻转期间收到以下异常:

2018-06-06 14:52:00,018 Log4j2-TF-3-Scheduled-1 ERROR Unable to move file C:\api.20180606.1448.log to C:\api.20180606.1448.log: java.nio.file.NoSuchFileException C:\api.20180606.1448.log -> C:\api.20180606.1448.log
2018-06-06 14:52:00,019 Log4j2-TF-3-Scheduled-1 ERROR Unable to copy file C:\api.20180606.1448.log to C:\api.20180606.1448.log: java.nio.file.NoSuchFileException C:\api.20180606.1448.log

但是如果我用 %i 将我的 filePattern 更新为C://ssvp-api.log//api.%d{yyyyMMdd.HHmm}-%i.log一切正常,但我不想有额外的文件号在我的日志文件名中(例如 api.20180606.1448-1.log)

是否有机会避免在日志文件名中包含文件号?

标签: javalogginglog4j2

解决方案


最后,我发现 log4j2 2.7 版本包含几个与 CronTriggeringPolicy 功能相关的问题,它们是: https ://issues.apache.org/jira/browse/LOG4J2-1487 https://issues.apache.org/jira/浏览/LOG4J2-1640 更新到 2.8.1 版本解决了我的问题。


推荐阅读