2016-05-03 70 views
7

ログの管理に、累積サイズの合計制限に達したか、または履歴の最大制限に達したときに、最も古いアーカイブログファイルを削除する方法があります。 Logback 1.1.7でSizeAndTimeBasedRollingPolicyを使用する場合、ローリングファイルアペンダはtotalSizeCapを超えても新しいアーカイブを作成し続けます。ログバック:SizeAndTimeBasedRollingPolicyがtotalSizeCapを尊重しない

ここに私のlogback.xmlファイルは参照用です:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appender name="file" 
     class="ch.qos.logback.core.rolling.RollingFileAppender"> 

     <file>${USERPROFILE}/testlogs/test.log</file> 

     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 
      <fileNamePattern> 
       ${USERPROFILE}/testlogs/%d{yyyy-MM-dd_HH}/test%i.log.zip 
      </fileNamePattern> 
      <maxHistory>7</maxHistory> 
      <maxFileSize>50KB</maxFileSize> 
      <totalSizeCap>200KB</totalSizeCap> 
     </rollingPolicy> 

     <encoder> 
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p - %m%n</pattern> 
     </encoder> 

    </appender> 

    <root level="INFO"> 
     <appender-ref ref="file" /> 
    </root> 
</configuration> 

が、これはlogbackのバグですか、私が正しくローリングファイルアペンダを構成していないのですか?

答えて

2

でも、質問に答えても、1.1.8でバグが修正されるまでの作業を投稿したかったのです。

bug 1166単に最初の2つの時間単位totalSizeCapは適用されません、それはのための最初の2時間のログを検討していないだろう、あなたのシナリオするための手段を使用しているfileNamePattern上の最小単位に依存しますtotalSizeキャッピング

私の設定は、どういうわけかログバックサイトの例のようです。

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
    <!-- daily rollover --> 
    <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 

    <!-- keep 30 days' worth of history capped at 3GB total size --> 
    <maxHistory>30</maxHistory> 
    <totalSizeCap>3GB</totalSizeCap> 

</rollingPolicy> 

そこで単に {YYYY-MM-dd_HH}に{YYYY-MM-DD}切り替えもちろん30 * 24にmaxHistoryを最大化。したがって、我々はの2時間を最後にの最後の2日の代わりにキャップしないようにしました。私たちのケースでは省略可能でした。もちろん、ログファイルは1時間ごとにロールオーバーを開始しますが、私が言ったように、私たちのユニークなケースでは大丈夫でした。

関連する問題