TraceListener を実装して Debug.WriteLine/Print の出力先を変更/追加する方法
Debug.WriteLine や Debug.Print の出力先を追加する方法です。出力先を Twitter にした例は、こちら。[Visual Studio] Debug.WriteLine でツイートできる NuGet パッケージを作った
コード中の Debug.WriteLine の記述などはそのままに、ログの出力先を追加したり、標準では用意されていないところ(特定のデータベースなど)に出力したりできます。
カスタム TraceListener クラスの作成
TraceListener クラス (System.Diagnostics) を継承したクラスを作ります。
Write と WriteLine メソッドを最低限実装すればよいのでお手軽です。データベースなど所望の場所に出力しましょう。標準でいくつか TraceListener を継承したクラスがあるので、まずそれも確認しておくとよいです。
C# サンプル
https://gist.github.com/jz5/6e614a214a593b373359
Visual Basic (VB.NET) サンプル
https://gist.github.com/jz5/fe2d273e300c40d1213a
出力先の追加(使い方)
コードに記述
作った カスタム TraceListner クラスは、次のように Trace.Listeners.Add で追加して使います。
https://gist.github.com/jz5/a8258e951f66fdc160f3
App.config に記述
コードに追加せず、App.config や Web.config に、次のように <system.diagnostics>
https://gist.github.com/jz5/d32236e9b6e712a988b4
Foo.Diagnostics.FooTraceListener は、名前空間を含むクラス名、その後の FooTraceListener は、アセンブリ名(DLL の名前)です。適宜、置き換えてください。
また、.config ファイルに TraceListener 用のパラメーターを持たせることができます。「独自の TraceListener 実装でそのリスナー独自の構成パラメータを指定するには : @jsakamoto」が、参考になります。