web-dev-qa-db-ja.com

log4jを取得して古いローテーションログファイルを削除するにはどうすればよいですか?

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

56
skiphoppy

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

51
Jared Oberhaus

ログがローテーションするのには理由があります。そのため、保持するログファイルの数は非常に多くなります。 log4j.xmlで、これをノードに追加できます。

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

この値は、log4j.xmlに20個のローテーションされたログファイルのみを保持するように指示します。必要に応じてこれを5に制限することも、1に制限することもできます。アプリケーションがそれほど多くのデータを記録しておらず、過去8か月に20個のログファイルがあるが、必要なログが1週間だけの場合は、 log4j.xmlの「MaxBackupIndex」および「MaxFileSize」パラメーターを調整する必要があります。

または、(xmlの代わりに)プロパティファイルを使用しており、15個のファイルを保存する場合(たとえば)

log4j.appender.[appenderName].MaxBackupIndex = 15
41
rcarson

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

簡単な指示が見つかりました こちら

1 から:

毎日のログファイルにApache Log4J DailyRollingFileAppenderを使用しようとしている場合、保持するファイルの最大数を指定する必要があります。 RollingFileAppenderがローリングと同様にmaxBackupIndexをサポートします。ただし、現在のバージョンのLog4j(Apache log4j 1.2.16)では、DailyRollingFileAppenderを使用している場合、古いログファイルを削除するメカニズムは提供されていません。元のバージョンのDailyRollingFileAppenderに小さな変更を加えて、maxBackupIndexプロパティを追加しようとしました。そのため、将来の使用に不要な古いログファイルをクリーンアップすることが可能です。
9
user3195649