Logback:TimeBasedRollingPolicy有时不会更改目录

时间:2016-07-01 11:24:16

标签: java logging logback slf4j rollingfileappender

我正在使用我的应用程序中的logback并跟随滚动文件appender。

<appender name="OVERALL_SYNCHRONOUS" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <Append>true</Append>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- Daily rollover -->

        <fileNamePattern>${logRoot}/${dirName}/application_overall.log.zip</fileNamePattern>
    </rollingPolicy>
    <encoder>
         <pattern>%d{dd.MM.yy HH:mm:ss.SSS} [%-5level] %65.65(%logger{0}.%aspectjFreeMethod\(%line\)): %X{MDC_CtrlName}%msg%n</pattern>
    </encoder>
</appender>

这在大多数情况下都能正常工作,但有时在当天更改时,它会按预期拉伸前一个但不会更改新日志文件的目录。它在前一天的同一文件夹中创建新文件。

当日期从18.11.15更改为19.11.15时,应用程序将应用程序压缩为application_overall.log并创建“application_overall.log.zip”。 但是应用程序继续登录文件夹“2015-11-18”中的application_overall.log。 没有在文件夹“2015-11-19”中创建application_overall.log,而应用程序的所有其他日志文件都压缩在“2015-11-18”文件夹中,并且在当前日期文件夹中创建了新的日志文件,即“二○一五年十一月十九日“ 。

重新启动后,在“2015-11-19”文件夹中创建了application_overall.log的新日志文件。

修改 logroot和dirName定义如下: -

<insertFromJNDI env-entry-name="java:comp/env/log/logRoot" as="logRoot"     
scope="context"/>
    <insertFromJNDI env-entry-name="java:comp/env/log/dateDirNamePattern" as="datePattern" scope="context"/>
<property name="dirName" value="%d{${datePattern:-yyyy-MM-dd}}" scope="context"/>

这种行为的可能原因是什么?如何解决这个问题?

0 个答案:

没有答案