2011-10-25 17 views
4

私のアプリケーションでは、いくつかのアペンダ(FileAppenderMemoryAppender、およびAdoNetAppender)が使用されています。私は、新しいファイルが必要に応じて作成されるようにログをリセットするコマンドを持っています。これは素晴らしい作品です - 私は単にlog4net.LogManager.GetRepository().Shutdown()と呼んでいます。Shutdown()を呼び出した後にlog4netメモリアペンダを再起動する

私は同時にMemoryAppenderにもログを記録し、アペンダーからイベントを取り出してログウィンドウに表示するタイマーがあります。前述のリセット機能を使用すると、イベントがログに記録されなくなるため、ログウィンドウにメッセージが表示されなくなります。

については、適切なファイル名を設定してからActivateOptionsを呼び出して再度ログを開始することができました。私はMemoryAppenderActivateOptionsを呼び出しましたが、それでもログの記録を開始できません。 ActivateOptionsを呼び出す前に、私はオブジェクトがすでに設定されていることを確認しました。実際には、リセット機能を呼び出した時点から設定が保存されているので、大丈夫です。

私もオンラインで検索しましたが、log4net.Config.DOMConfigurator.Configure(廃止されました - 現在はlog4net.Config.XmlConfigurator.Configure`)に電話する必要がありますが、それでも問題はありません。

ファイル、メモリ、およびAdoアペンダーをサポートしている間に、ログをシャットダウン/再起動しようとする方法がありますか?

+0

「ログをリセットする」と言うと、ファイルを空にするだけですか? –

+0

新しいファイルを作成したいのですが、FileAppenderは正常に動作しています。 Shutdownを呼び出してActivateOptionsで再起動しようとすると、イベントを記録していないMemoryAppenderです。 – Dave

+0

また、AdoNetAppenderも同様に機能すると付け加えます。これを実装するために、私はShutdownを呼び出してから、s3dbファイルの名前を変更し、元のファイル名で新しい "開始" s3dbファイルをコピーします。面白いのは、AdoNetAppenderの場合、ActivateOptionsをどこにでも呼び出さないということです。ちょっと魔法のように動作します。 – Dave

答えて

1

Shutdownメソッドを呼び出さないようにしたいと思っています。アペンダー上に新しいファイル名を設定し、ActivateOptionsに電話するだけです。これにより古いログファイルが閉じられ、新しいログファイルが開きます。

+0

私はここで私のコメントを変更し続けています... :)私はその提案を試してみましょう。うまくいけば、AdoNetAppenderのためにもうまくいきたいと思います。 – Dave

+0

ありがとう!これはまったくトリックでした。ログをリセットするときにシャットダウンを呼び出さなくなり、MemoryAppenderが機能します。私はファイル名を変更し、FileAppenderのActivateOptionsを呼び出します。また、AdoNetAppendersの場合は、Close()を呼び出し、古いs3dbファイルを移動してからActivateOptionsを呼び出すと、新しいログデータベースが生成されます。完璧! – Dave

関連する問題