私のオブジェクトは、サイズ (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」しか取得できず、終了したかどうか確認できません。
時間が経過したらすぐにログ ファイルをファイナライズするにはどうすればよいですか?