我的对象是基于大小(10M)和时间(每天)的压缩(zip)归档,所以我这样编写配置:
<appender name="Behavior" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %logger{50} - %msg%n
</pattern>
</layout>
</appender>
但我遇到了一个问题。例如今天是 8 月 10 日,所以 logback 正在写入日志文件“2013-08-10.0.log”。
但日志文件不会在 8 月 11 日 0:00:00 完成(意味着关闭并压缩到“2013-08-10.0.log.zip”)。事实上,直到 8 月 10 日之后的第一条记录写完,它才会最终确定。
这意味着,在 8 月 10 日之后,如果第一条记录是在 8 月 11 日 16:00:00 写入的,那么当我在 8 月 11 日 0:00 之间扫描目录时,我无法获得“2013-08-10.0.log.zip”: 00 和 16:00:00。我只能得到“2013-08-10.0.log”,我不能确定它是否完成。
一旦时间结束,我该如何完成日志文件?