Cekiの解決策は私にはうまくいかないように見えますが、少なくとも部分的にはうまくいっているようです。
の起動時にローリング ポリシーが表示されないため、失敗しTimeBasedFileNamingAndTriggeringPolicyBase
ます。いくつかのハッカーでログを記録し、さらにトリガーを観察しましたが、ファイル名のプロパティの1つを解決できなかったため、再び壊れました...パッケージはログバックパッケージなので、私は内部の一部にアクセスして、 のロジックの一部を複製し、SizeAndTimeBasedFNATP#isTriggeringEvent
を呼び出すことができますcomputeCurrentPeriodsHighestCounterValue
。魔法の組み合わせがまだ見つかっていないだけで、これらの線に沿った何かが機能する可能性があると思います. そうしないと、サブクラス化のために詳細の一部を開くか、これを別のローリング/トリガーポリシーとしてログバックに直接入れることになると思うので、何かばかげたことをしていることを本当に願っています。
logback.xml: の内部と外部のさまざまな順序を試しtriggeringPolicy
ましTimeBasedFileNamingAndTriggeringPolicy
たrollingPolicy
。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_FILE_BASE}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${LOG_FILE_BASE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>7</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.RollOnStartupPolicy" />
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
トリガー ポリシー:
package ch.qos.logback.core.rolling;
public class RollOnStartupPolicy<E> extends SizeAndTimeBasedFNATP<E> {
private final AtomicBoolean firstTime = new AtomicBoolean(true);
@Override
public boolean isTriggeringEvent(File activeFile, E event) {
if (!firstTime.get()) { // fast path
return false;
}
if (firstTime.getAndSet(false)) {
return true;
}
return false;
}
}
例外:
java.lang.NullPointerException
at at ch.qos.logback.core.rolling.TimeBasedFileNamingAndTriggeringPolicyBase.start(TimeBasedFileNamingAndTriggeringPolicyBase.java:46)
at at ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP.start(SizeAndTimeBasedFNATP.java:36)
at at ch.qos.logback.core.joran... [snip joran config]