9

RollingFileAppenderlog4j 1.2.16、ログ ファイルが特定のサイズに達したときにログ ファイルをローリングする を使用しています。ここで、ログ ファイルを毎日ローリングし、特定のサイズに達したときにローリングしたいと考えています。したがって、1 日あたり 1 つ以上のログ ファイルが作成されます。

例えば、

myapp.log
myapp-17.12.2013.log
myapp-16.12.2012.log
myapp-16.12.2012.1.log
myapp-16.12.2012.2.log

既製のアペンダーはありますか?

4

3 に答える 3

8

実際には 2 つのオプションがあります。

  1. サイズと時間のトリガー ポリシーで LogBack を使用します: http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP
  2. ここから Log4J の TimeAndSizeRollingAppender があります: http://www.simonsite.org.uk/

どちらのオプションもファイルの名前変更を使用することに注意してください。これらのファイルを自動的に移動する別のスクリプトがある場合は、これを慎重に検討してください。2 つのプロセスが同じファイルを処理する場合、ファイルの名前変更は危険です。

myapp-{dd.MM.yyyy}.{X}.log というパターンで不変のログ ファイル名に直接書き込むことをお勧めします。このように「ローリング」とは、単純に 1 つのファイルを閉じて新しいファイルを開くことです。名前の変更はありません。バックグラウンド スレッドはありません。

于 2013-01-07T18:45:12.077 に答える
4

簡単な答えは「いいえ」です。log4j の javadoc を見る: https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html

すぐに使用できるファイル アペンダーは、DailyRollingFileAppender と RollingFileAppender の 2 つだけです (最初のものは同期の問題があるためお勧めしません)。

目的を達成するには、独自のアペンダーを作成し、RollingFileAppender を拡張して、日が変わった場合にファイルをロールするように変更する必要があります。変更はメソッドにあります:

 protected void subAppend(LoggingEvent event)

ソースはhttp://www.docjar.com/html/api/org/apache/log4j/RollingFileAppender.java.html (274 行目) にあります。

コードをコピーして貼り付け、必要に応じて rollOver を呼び出す場合に変更するだけです。

于 2012-12-18T15:35:24.067 に答える