2009-08-27 11 views
3

カスタムトレースリスナの実装。私は、次のようなカスタムトレースリスナを実装する書くとWriteLineメソッド問題行動

public class TraceListener : System.Diagnostics.TraceListener 
{ 

    public override void Write(string message) 
    { 
     LogToDatabase(message); 
    } 

    public override void WriteLine(string message) 
    { 
     LogToDatabase(message); 
    } 
} 

は今、エラーがどこかにコード内で発生したと仮定します。キャッチブロックで実行したい

Trace.TraceError(ex.ToString()) 

ここでexはキャッチされた例外です。 問題はMyTraceListenerでWriteメソッドとWriteLineメソッドのメッセージパラメータが異なることです。さらに興味深いのは、ex.ToString()によって生成された文字列が、WriteLineメソッドのパラメータとして渡されますが、Writeでは渡されません。

答えて

3

実際には、Trace.TraceError()メソッドは2つのメソッドを呼び出します。まず、Write()を実行してエラーのソースとエラーコードを書き出し、WriteLine()メソッドを使用してエラーの説明を出力します。

PS:カスタムTraceListenerのインスタンスを追加する前に、Clear()メソッドを使用して、トレースリスナーのデフォルトインスタンスを削除します。

+1

うわー。 WriteとWriteLineには異なるパラメータがあるとは決して考えていませんでした。 –