2011-01-13 4 views
4

私はlog4netを使用しています。.NET Common.Logging。私はそうのようなメソッドとクラス名を含めるようにメッセージパターンを設定した:それは最も役に立たないですメソッドまたはクラス名を記録すると、常にCommon.Loggingメソッドが書き込まれます。

FATAL [Fatal Common.Logging.Factory.AbstractLogger] - log message 
INFO [Info Common.Logging.Factory.AbstractLogger] - log message 
DEBUG [Debug Common.Logging.Factory.AbstractLogger] - log message 

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-5level [%M %C] - %message%newline" /> 
</layout> 

問題は、私はいつもCommon.Logging方法とクラスの名前を取得することです。 私のメソッド名を印刷する方法はありますか?

答えて

3

Common.Loggingを変更する必要があると思います。ファイルLog4NetLogger.csでトリックを行う必要があります

private readonly static Type declaringType = typeof(AbstractLogger); 

これで次の行

private readonly static Type declaringType = typeof(Log4NetLogger); 

を交換してください。 Hereがこれがうまくいく理由の説明です。

+0

あなたは正しいです。このタスクに関連する未解決のバグがあります:https://sourceforge.net/tracker/index.php?func=detail&aid=3044182&group_id=182424&atid=901156 – HuBeZa

+0

この問題は2010-08-13に開かれましたが、まだCommonになっています。ロギング2.1.1 –

1

このフォーマットは

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-5level [%logger] - %message%newline" /> 
</layout> 

マイロガーは、私は2.0.0.0うたこれらの無修正のdll

  • Common.Logging.dllを使用

    private static readonly Common.Logging.ILog logger = 
           Common.Logging.LogManager.GetCurrentClassLogger(); 
    

    として定義されている私の設定で動作します

  • Common.Logging.Log4Net.dll ver 2.0.0.0
  • 私はので、私はmethodNameのを取得するためにコールスタックを分析しても、パフォーマンスのオーバーヘッドを持っていないテキストとしてログ呼び出しにmethodNameの追加ログメッセージで :1.2.10

アップデート版

  • log4net.dll。

  • +0

    あなたは正しいです。これはクラス名の問題を解決します。メソッド名は、特に私がそれを構成するときだけ、メソッド名を常に取得するためにリフレクションを使用したくないので、はるかに大きいものです。 – HuBeZa

    関連する問題