2017-09-20 4 views
1

長時間実行するJavaプログラムにhttps://logback.qos.ch/を使用しています。 プログラムの最初のN行だけを記録するようにいくつかのアペンダを設定する方法はありますか?Logbackで最初のN行だけをログに記録する

例えば、プログラムは起動時に重要な情報を記録しますが、ローリングファイルアペンダを使用すると、起動時のログは最終的に削除されます。

私は次のようにlog4jでこれを行う方法が見つかりました:

<appender name="StartupAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${samza.log.dir}/${samza.container.name}-startup.log" /> 
    <param name="MaxFileSize" value="256MB" /> 
    <param name="MaxBackupIndex" value="1" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} [%p] %m%n" /> 
    </layout> 
</appender> 
<logger name="STARTUP_LOGGER" additivity="false"> 
    <level value="info" /> 
    <appender-ref ref="StartupAppender"/> 
</logger> 

私はLogbackでこれを行うにはどうすればよいですか?

答えて

1

ありなし缶詰、既存Logback私はあなたが持っていた構成と一致Logback構成を作成するためにrollingPolicytriggeringPolicyのLogbackの既存の実装を使用することをお勧めしたい「Logbackのみ最初のN行をログ」なるアペンダLog4Jで作業しています。

あなたの質問でStartupAppenderのLogbackと同等である:

<appender name="StartupAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${samza.log.dir}/${samza.container.name}-startup.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>${samza.log.dir}/${samza.container.name}-startup.log.%i.log</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>1</maxIndex> 
    </rollingPolicy> 

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>256MB</maxFileSize> 
    </triggeringPolicy> 
    <encoder> 
     <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} [%p] %m%n</pattern> 
    </encoder> 
</appender> 

<logger name="STARTUP_LOGGER" additivity="false"> 
    <level value="info" /> 
    <appender-ref ref="StartupAppender"/> 
</logger> 

これはあなたのLog4J StartupAppenderと同じように動作しますが、ちょうどそのアペンダのように、プログラムの」最初のN行を保持することは保証されませんそれは256MBに達するとロールオーバーするからです。しかし、このアペンダーをロガーに関連付けるだけなので、STARTUP_LOGGERは、「スタートアップログ」の長い履歴を保持するのに十分なスペースが256MB以上あるようです。

関連する問題