2007年03月07日

Enterprise Library: カスタムトレースリスナー

   このエントリーをはてなブックマークに追加 Clip to Evernote
Enterprise Library のカスタムTraceListener をC#で、作成しようとしたのだが、残念ながら日本語のサイトでは見つけることができなかった。

googleで検索し、CodeGuru のサイトに、
Enterprise Library 2.0: The Logging Application Block

という記事があるのを見つける。うれしいことに、C#のサンプルコードもダウンロードできるようになっている。

なるほど、.NET Framework の TraceListenerあるいはその派生クラスを元に、クラスを定義し、属性
[ConfigurationElementType(typeof(CustomTraceListenerData))]

を付加すれば良いだけか。

もっとも簡単なのが、CustomTraceListenerから派生させる方法。

このとき、
void TraceData(TraceEventCache eventCache, string source, 
TraceEventType eventType, int id, object data)

をoverrideするのだが、最後の引数 object には、LogEntry のインスタンスが渡ってくるので、この情報を元に、ログ出力する処理を書けばよいことになる。

TraceDataメソッド内で、

string text = this.Formatter.Format(data as LogEntry);

とすれば、構成ファイルで指定した、Formatter が呼び出される仕組みに
なっている。

string text = (data as LogEntry).ToString();

とした場合は、TextFormatter の Formatメソッドが呼ばれることになる。

構成ファイルに付加的な情報をセットしておいて、TraceListener内で、それを利用することも可能なようだ。

ここまでわかれば、EnterpriseLibraryの該当するソースそのものを読むのもそれほど大変なことではないかな。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50724786