我正在使用我的应用程序中的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"/>
这种行为的可能原因是什么?如何解决这个问题?