2010-11-23 132 views
18

私はlog4net RollingFileAppenderをC#で書かれたWindowsサービスプログラムで使用しています。ログディレクトリ内のファイルの数とサイズが急増しており、クリーンアップが必要です。構成は以下の通りです:Log4Netはログファイルを自動的に削除できますか?

<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender"> 
<file value="..\logs\MyProgram.%cs{instanceName}.log" /> 
<appendToFile value="true" /> 
<rollingStyle value="Composite" /> 
<datePattern value=".yyyy-MM-dd.lo\g" /> 
<maxSizeRollBackups value="10" /> 
<maximumFileSize value="150MB" /> 
<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" /> 
</layout> 

私はログのみの30日間を維持したいです。ログを自動的に削除するようにlog4netを設定するにはどうすればよいですか? log4netで利用できない場合、私はどのようなソリューションを用意していますか?

ありがとうございます。

答えて

-1

Thisは、いくつかの助けを提供する必要があります。 RollingFileAppenderセクションここ

+3

彼はすでにRollingFileAppenderを使用していて、あなたがこれを行うか、できない場合に、このドキュメントの情報はありません。 – steinar

+1

何もすることはありません。 –

8

探しすることは、本質的に同じことを要求するように、ここから別の質問です: Log4Net: set Max backup files on RollingFileAppender with rolling Date

コンセンサスはlog4netのは、それを直接サポートしていないということでした。あるポスターはlog4netのソースコードリポジトリに実装されているが、まだリリースされていないと述べている。別のポスターには、古いファイルを定期的にクリーンアップするために使用するコードがいくつか表示されています。

+0

このオプションは、RollingFileAppenderを上書きするよりも簡単に思えるので、私には魅力的です。今私は、Quartz.Netのようなスケジューラーによってトリガーされたログメンテナンスジョブを追加する予定です。 – tonyjy

+1

私は@jeffが彼の答えでかなり良い解決策を持っていたことを考えた:http://stackoverflow.com/questions/95286/log4net-set-max-backup-files-on-rollingfileappender-with-rolling-date/2916628#2916628 。基本的には、アプリの起動時にファイルを削除するかどうかを確認するかどうかを確認します。アプリケーションの実行時間が長すぎない場合(つまり、一度に30日を超えない場合)、彼のアプローチでは十分かもしれません。 – wageoghe

4

私はそれを確認することはできませんが、既存のアペンダーではできないと確信しています。 (あなたはより多くの制御をしたい場合や、サブクラスFileAppender)RollingFileAppenderをサブクラス化、独自のアペンダを作成

  1. はしかし、私は2つのオプションを参照してください。そのアペンダを使用するように設定ファイルを変更します(appender要素を変更します)。

  2. は、X日(:Batch file to delete files older than N daysを参照)よりも古いファイルを削除.batファイルを作成します。次に、このbatファイルを実行するWindows(http://support.microsoft.com/kb/308569)のタスクを作成します。毎日。
+1

私は最初のアプローチがより好きです。 2番目のアプローチでは、現在のプロセスよりも展開が多く必要になり、追跡が容易ではありません。 – tonyjy

関連する問題