2012-05-30 77 views
0

我想要做這樣的事情:我可以使用Global.asax的靜態屬性作爲log4net記錄器嗎?

<script RunAt="server"> 

private static log4net.ILog _logger = null; 
public static log4net.ILog Logger 
{ get { return _logger; } } 

protected void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 
    log4net.Config.XmlConfigurator.Configure(); 
    _logger = log4net.LogManager.GetLogger("DtWebLogger"); 
} 

.... 
</script> 

我在這之後我想可以在每個頁面使用相同的記錄器對象。

那麼,這是可能的嗎?或者我在哪裏可以實現記錄器的全局實例?

回答

0

您的inited是正確的,log4net.LogManager.GetLogger已經使用一個實例,不需要再次執行。

2

您不希望記錄器的全局實例。相反,你想每個班都有一個。要記錄每個班應該有這樣的事情:

private static readonly log4net.ILog _logger = log4net.LogManager.GetLogger(typeof(MyClass)); 

類型信息被用作記錄器輸出的一部分。你也可以創建自己的包裝ILog的類,併爲你提供一個構造函數,從StackFrame中提取當前類的類型。

相關問題