2009-06-26 30 views
50

古い回転ログファイルを削除するにはどうすればよいですか?自動化されたジョブ(UNIXの場合はcron、Windowsの場合はスケジュールされたタスク)を設定できますが、クロスプラットフォームが必要です。アプリケーションの別のコードではなく、アプリケーションの一部としてアプリケーションのログ設定で使用します特定のスクリプト言語。私たちのアプリケーションはOSスクリプティング言語で書かれていないので、私はその中でこの部分をしたくありません。古い回転ログファイルを削除するにはどうしたらよいですか?

答えて

44

RollingFileAppenderは、これを行います。 maxBackupIndexをバックアップファイルの最高値に設定するだけです。

+42

DailyRollingFileAppenderでこれを行う方法はありますか? –

+3

いいえ、標準のものではありません - 以下のuser3195649からの回答を参照してください。 log4jはApache Extrasを信じています。 –

+0

DailyRollingFileAppenderによって(* .log.2016-09-12)以前にアーカイブされた古いログファイルも削除されますか? – mvdb

37

ログは何らかの理由でローテーションするため、多くのログファイルを保持するだけです。 log4j.xmlでは、あなたのノードにこれを追加することができます。

<param name="MaxBackupIndex" value="20"/> 

値はわずか約20個のローテーションされたログファイルを維持するためのlog4j.xmlを伝えます。あなたが望むならばこれを5に制限することもできます。もしあなたのアプリケーションがそれほど多くのデータを記録しておらず、過去8ヶ月のログファイルが20個ありますが、あなたのlog4j.xml "MaxBackupIndex"と "MaxFileSize"パラメータを調整する必要があります。

プロパティを使用している場合は別の方法として、(XMLではなく)ファイルと(例えば)15個のファイルを保存したい

log4j.appender.[appenderName].MaxBackupIndex = 15 
+6

DailyRollingFileAppenderではこれが動作しますか? – rogerdpack

7

DailyRollingFileAppenderによって作成された古いログファイルの削除を制御するデフォルト値はありません。しかし、MaxBackupIndexをRollingFileAppenderに設定するのとほとんど同じ方法で、古いログファイルを削除するカスタムのAppenderを記述することができます。

単純な命令は1からhere

が見つかりました:

あなたが毎日、ログファイルについては、Apache Log4JのDailyRollingFileAppenderを使用しようとしている場合、あなたはどのすべきファイルの最大数を指定する必要があるかもしれません守らなければならない。ローリングのように、RollingFileAppenderはmaxBackupIndexをサポートしています。しかし、現在のバージョンのLog4j(Apache log4j 1.2.16)では、DailyRollingFileAppenderを使用している場合、古いログファイルを削除するメカニズムは提供されていません。私は、MaxBackupIndexプロパティを追加するために、DailyRollingFileAppenderのオリジナルバージョンで小さな修正を加えようとしました。したがって、将来の使用に必要ではない可能性のある古いログファイルをクリーンアップすることは可能です。
関連する問題