2009-04-30 15 views
3

我試圖用System.Diagnostics提供的一些日誌功能來增強我的程序。由於我的解決方案由多個項目組成,因此我想爲整個應用程序創建一個開關,併爲每個項目創建一個開關。在我的設計中,我應該在哪裏放置項目或應用範圍的TraceSwitch?

現在的問題是,我該如何做到這一點,我應該在哪裏放置開關定義?

從應用程序範圍開關開始,因爲我沒有理解C#中的全局變量,所以我怎麼能實現這一點?

將投入

static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application."); 
每類

一次解決這個或有班會變成這樣,而創造儘可能多的開關,每個開關具有相同的名稱? (我的猜測是後者)

或者我應該把初始化一次在一個單獨的類

static class GlobalSwitch 
{ 
    static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application."); 
} 

,並引用它從所有其他類這樣

public OtherClass 
{ 
    static TraceSwitch Application = GlobalSwitch.Application; 
} 

這樣就解決了有1整個項目切換,但這是一個很好的做法?

關於應用程序範圍的開關,我將不得不在每個其他項目中都引用包含GlobalSwitch類的項目,如果可能,我想盡量避免使用該項目。

一些線索,如何做到這一點聰明的方式將非常感激。

回答

2

我通常會將跟蹤開關(和日誌函數)包裝到中央日誌程序集中,向交換機展示一個靜態接口以及將調用所使用的底層日誌功能的靜態日誌方法(通常爲Trace.Write-功能)。

+0

好主意,把所有的日誌記錄放入自己的程序集中,顯然很好,我甚至都沒有想過! ;) – 2009-04-30 09:41:09

相關問題