minato128 blog

minato128の公開メモ帳です。

log4netでWCFサービスのリクエストIDをロギングする

スレッドID(conversionPatternの%t)だけだとログがトレースしにくいので、
リクエスト単位でIDを振ってロギングすることにした。

screenshot
WCF Web API and logging unique request id with log4net

検索したらすぐいいサンプル↑が見つかって、
コメント欄まで読んだらlog4net.LogicalThreadContext使えば簡単にできるってあったから、
実際にやってみたら本当にあっさりできた。
まだ複雑なテストはやってないけど、今のところうまく動いてるように見える。


これを全サービスクラスで継承してる抽象クラスで実行

log4net.LogicalThreadContext.Properties("RequestId") = IdGenerator.GetRequestId


log4net設定

<conversionPattern value="%-5p %d [%t][%property{RequestId}] %m%n"/>


実行環境

Windows7 64bit
VS2010(.NET 4.0)
log4net 1.2.10