2011-01-13 29 views
4

我正在使用log4net.NET Common.Logging。我配置了消息模式,包括方法和類的名稱,像這樣:記錄方法或類名始終寫入Common.Logging方法

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

問題是,我總是得到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 

它是最無用的。有沒有辦法打印我的方法名稱

回答

3

我想你需要修改Common.Logging。在文件Log4NetLogger.cs替換下面的行

private readonly static Type declaringType = typeof(Log4NetLogger); 

private readonly static Type declaringType = typeof(AbstractLogger); 

這應該做的伎倆。 Here是一些解釋爲什麼這應該工作。

+0

你說得對。有一個與此任務相關的開放式錯誤:https://sourceforge.net/tracker/index.php?func=detail&aid=3044182&group_id=182424&atid=901156 – HuBeZa 2011-01-13 15:11:12

+0

該問題已於2010-08-13開放,但仍爲常用。記錄2.1.1 – 2012-09-28 23:48:48

1

這種格式能夠在我的配置

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

我的記錄器被定義爲

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

我使用這些DLL的未修改

  • Common.Logging.dll版本2.0.0.0
  • Common.Logging.Log4Net.dll ver 2.0.0.0
  • log4net.dll版本1.2.10

更新: 在日誌消息我添加方法名進入通話記錄爲文本,所以我有分析調用棧,以獲得方法名沒有性能開銷。