私たちのシステムでは、log4netを介してTrace.Write()(古い方法)とログの両方を同時に使用します。log4net - TraceListenerとTraceAppender - 2つのログの方法を混合する
これらの方法を統一したいと思います。 Log4NetTraceListenerという名前のカスタムリスナーを追加しました。これはTraceからのメッセージを処理してログファイルに入れます。簡体字コード:
public class Log4NetTraceListener : System.Diagnostics.TraceListener
{
public override void Write(string message)
{
_log.Debug(message);
}
それは正常に動作しますが、何私もやりたいことも、定期的にlog4netの方法のためのVisual Studioの出力ウィンドウにログインしています。
私の最初のアイデアは、log4net構成にTraceAppenderを追加することでした。それは正常に動作しますが、リスナとの関係では無限ループを引き起こします。
このような問題を処理するための「きれいな」方法はありますか?たぶん、リスナーやアペンダーのフィルタリングの一部ですか?すべてTrace.Write()
呼び出しがLog4NetTraceListener
クラスを通って、Trace.Write()
通話が終了しないように、あなたのlog4netのロギングの残りの部分は、あなたがあなたのログ階層を構成することができない(すなわち、それは普通の.Debug()
、.Error()
呼び出しだ)ないことを行くと仮定すると
Log4net設定にDebugAppenderを追加できませんか? – thudbutt