2011-04-21 39 views
0

在我的代碼中,我使用log4net進行了Db日誌記錄。 我注意到做日誌的類有這個代碼。使用log4net時,您可以控制任何其他參數嗎?

public class Logger 
    { 
     readonly log4net.ILog _log; 
     public Logger() 
     { 
      XmlConfigurator.Configure(); 
      _log = log4net.LogManager.GetLogger("Oracle_Log_Appender"); 
     } 


     public void Log(string logString) 
     { 
       _log.Debug(logString); 
     } 
    } 

我傳遞給此機制的字符串被插入到消息列中的日誌表中。我希望有一個具有ID值的列,這將使我能夠在表格中搜索正確的消息。我能想到的例子是: 我正在處理一系列客戶對象。每個對象都有一個帶有ID的主鍵。 如果其中任何一個失敗,我想以下面的方式記錄它。

OBJECT_ID   MESSAGE        OBJECT_TYPE 
1001    Failed to fetch credit report   Customer 

我可以使用log4net嗎?

+4

[Log4Net和額外字段]的可能重複(http://stackoverflow.com/questions/1795310/log4net-and-extra-fields) – 2011-04-21 15:52:23

回答

1

當您在同一主題上瀏覽較早的question(帶有答案!)...此代碼示例不是idiomatic log4net。 ILog情況下應該是靜態的只讀並命名爲他們在課堂上。

private static readonly ILog Log = LogManager.GetLogger(typeof(<nameofclass>)); 

做記錄類的命名空間管理您的追加程序,過濾器和水平。不要在記錄器中使用單個名稱。因此,確保您的數據庫訪問全部在相同的名稱空間(或名稱空間根)中。例如

MyProject.Infrastructure.Oracle

但也沒有理由掩蓋這個愚蠢的包裝類背後的豐富ILog接口。

相關問題