Java Logback:TimeBasedRollingPolicy有时不会更改目录

Java Logback:TimeBasedRollingPolicy有时不会更改目录,java,logging,logback,slf4j,rollingfileappender,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.TimeBasedRollingPoli

我在应用程序中使用了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>

真的
${logRoot}/${dirName}/application\u total.log.zip
%d{dd.MM.yy HH:MM:ss.SSS}[%-5level]%65.65(%logger{0}.%aspectjFreeMethod\(%line\):%X{MDC_CtrlName}%msg%n
这在大多数情况下都可以正常工作,但有时在更改当天,它会按预期打开前一个日志文件,但不会更改新日志文件的目录。它将在前一天的同一文件夹中创建新文件

当一天从15年11月18日变为15年11月19日时,应用程序按其应有的方式压缩应用程序_total.log并创建“application_total.log.zip”。 但应用程序继续登录文件夹“2015-11-18”中的application_total.log。 在文件夹“2015-11-19”中未创建任何应用程序_total.log,而该应用程序的所有其他日志文件压缩在文件夹“2015-11-18”中,并且在当前日期文件夹(即“2015-11-19”)中创建了一个新的日志文件

重新启动后,在文件夹“2015-11-19”中创建了一个新的日志文件application_otheral.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"/>


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

如何定义${logRoot}和${dirName}?Hi Ceki,${logRoor}和${dirName}被定义为问题中的编辑部分。查看${logRoot}和${dirName}的实际计算值会很有趣。${logRoot}是否有$d{}部分?嗨,Ceki,为${logRoot}计算的实际值是logs,${dirName}是2016-08-12。这些似乎和预期的一样。@Ceki,你对这个问题有什么建议吗?如何定义${logRoot}和${dirName}?嗨,Ceki,${logRoor}和${dirName}被定义为问题中的编辑部分。看看为${logRoot}和${dirName}计算的实际值会很有趣。${logRoot}是否有$d{}部分?嗨,Ceki,为${logRoot}计算的实际值是logs,${dirName}是2016-08-12。这些似乎都是意料之中的。@Ceki,你对这个问题有什么建议吗?