3

これが私の状況です。log4netを使用してリモートsyslogへのロギングを正常に実装しました。ただし、テストできる限り、syslog IPが有効でない場合、すべてのメッセージはどこにもログに記録されず、例外は発生しません。何もしません。

したがって、ある種のフォールバックがあると便利です。syslogへの書き込みが失敗した場合、ファイルまたはデータベースに書き込みます。

log4netでもそれは可能ですか?または、同時に2つの場所にログを記録するように構成する必要がありますか?

4

1 に答える 1

3

構成によってこれを行うことはできないと思います。この問題は、log4net機能のバックログで発生します。

アプリケーションがロギングのオーバーヘッドを食いつぶすことができる場合、最も簡単な解決策は、デフォルトで代替のアペンダーにロギングすることです。

または、使用しているアペンダーをカスタムアペンダーでラップし、syslogアペンダーが例外をスローした場合のフォールバックシナリオを実装することもできます。それが静かにそれらを飲み込まない場合。

log4net FAQから:

log4net.Appender.IAppenderインターフェースを実装して、独自のカスタマイズされたアペンダーを作成できます。最初から始めるのではなく、log4net.Appender.AppenderSkeletonクラスを拡張することをお勧めします。log4netアセンブリとは別のアセンブリにカスタムコードを実装する必要があります。

開始するには、アペンダーを機能させるために必要な最小限のコードの例として、log4net.Appender.TraceAppenderのソースを確認する価値があります。

3番目のオプションは、アペンダーのソースコードを調べて、フォークして必要なカスタマイズを実行できるかどうかを確認することです。

于 2010-07-14T09:14:47.667 に答える