2011-04-18 2 views
6

匿名メソッドからログを取っているクラスがあります。私は生成されたクロージャークラス名ではなく、実際のクラス名をlog4netに追加できますか?

public class SocketFlusher 
{ 
    private static readonly ILog Log = LogManager.GetLogger(typeof(SocketFlusher)); 

    public void Flush() 
    { 
     Wait.For(timeout,() => 
     { 
      ... // work 
      Log.DebugFormat("{0} bytes available", socket.Available); 
     } 
    } 
} 

私log4netの設定が良いです...ポイントを作るためにそれをダウン易しく書き直さました(私はlog4netのdebug="true"出力とアペンダをチェックしました作業を行います)。私のアペンダのレイアウトは

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-4thread] %-5level %class{1} - %message%newline"/> 
    </layout> 

である。しかし、私のログ出力はそれにその狂気の自動生成された静的なクラスがあります。私はそれがSocketFlusherを言いたい

2011-03-21 18:10:20,053 [5 ] DEBUG SocketFlusher+<>c__DisplayClass1 - 82 bytes available 

、このフォーマットを取得する権利アペンダのレイアウトは何ですか?

答えて

8

クラス名をアペンダーの出力に表示します。そして、あなたはあなたがアペンダのパターンレイアウトに何をしたいのか

...
private static readonly ILog Log = LogManager.GetLogger(typeof($CLASSNAME$)); 

をごロガークラスの名前を命名のlog4netのイディオムをフォローしているユーザーは、%logger名パターンの代わりに、%classパターンを含めることです。

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-4thread] %-5level %logger{1} - %message%newline"/> 
</layout> 
関連する問題