共用方式為


追蹤開關

備註

本文專屬於 .NET Framework。 它不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。

追蹤參數可讓您啟用、停用和篩選追蹤輸出。 這些物件存在於您的程式代碼中,而且可以透過 .config 檔案在外部設定。 .NET Framework 中提供三種類型的追蹤參數: BooleanSwitch 類別、 TraceSwitch 類別和 SourceSwitch 類別。 類別 BooleanSwitch 會做為切換開關,啟用或停用各種追蹤語句。 TraceSwitchSourceSwitch類別可讓您針對特定的追蹤層級啟用追蹤切換,以便該層級以及低於該層級的所有TraceTraceSource訊息皆可顯示。 如果您停用開關,將不會顯示追蹤消息。 所有這些類別都衍生自抽象(MustInherit)類別 Switch,如同任何使用者開發的交換器一樣。

追蹤開關對於過濾資訊很有用。 例如,您可能會想要在資料存取模組中看到每個追蹤訊息,但只會看到應用程式其餘部分的錯誤訊息。 在此情況下,您會針對數據存取模組使用一個追蹤開關,並為應用程式的其他部分使用另一個開關。 藉由使用 .config 檔案來設定切換至適當的設定,您可以控制您收到的追蹤訊息類型。 如需詳細資訊,請參閱 如何:建立、初始化及設定追蹤開關

一般而言,已部署的應用程式會在其參數停用時執行,因此使用者不需要觀察畫面上出現的許多無關緊要的追蹤訊息,或在應用程式執行時填滿記錄檔。 如果在應用程式執行期間發生問題,您可以停止應用程式、啟用參數,然後重新啟動應用程式。 然後,就會顯示追蹤訊息。

若要使用參數,您必須先從 BooleanSwitch 類別、 TraceSwitch 類別或開發人員定義的 switch 類別建立 switch 物件。 如需建立開發人員定義的切換的詳細資訊,請參閱 .NET Framework 參考中的 Switch 類別。 然後,您可以設定組態值,指定何時使用 switch 物件。 接著,您會在各種 Trace (或 Debug) 追蹤方法中測試 switch 物件的設定。

追蹤層級

當您使用 TraceSwitch 時,還有其他考慮。 TraceSwitch 物件有四個屬性,這些屬性會傳回布爾值,表示開關是否至少設定為特定層級:

層級可讓您將收到的追蹤資訊數量限製為只將解決問題所需的資訊量限制在內。 您可以透過設定及配置追蹤開關至適當的追蹤層級,來指定追蹤輸出中所需的細節層級。 您可以接收錯誤訊息、警告訊息、資訊訊息、詳細資訊追蹤訊息,或完全沒有訊息。

完全由您決定要與每個層級產生關聯的訊息類型。 一般而言,追蹤訊息的內容取決於您與每個層級相關聯的內容,但您決定層級之間的差異。 例如,您可能想要提供第 3 層問題的詳細描述(資訊),但只提供層級 1 的錯誤參考編號(錯誤)。 完全由您決定哪一個配置在您的應用程式中效果最佳。

這些屬性會對應至 TraceLevel 列舉的值 1 到 4。 下表列出 TraceLevel 列舉的層級及其值。

列舉值 整數值 顯示的訊息型態(或寫入指定的輸出目標)
關閉 0 沒有
錯誤 1 只有錯誤訊息
警告 2 警告訊息和錯誤訊息
資訊 3 參考訊息、警告訊息和錯誤訊息
詳細資訊 4 冗長訊息、資訊訊息、警告訊息和錯誤訊息

TraceSwitch 屬性會指出開關的最大追蹤層級。 也就是說,會針對指定的層級以及所有較低層級寫入追蹤資訊。 例如,如果 TraceInfotrue則 TraceErrorTraceWarning 也是 true ,但 TraceVerbose 可能是 false

這些屬性是唯讀的。 TraceSwitch 物件會在設定 TraceLevel 屬性時自動設定它們。 例如:

Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, because setting the level to
' TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString())
' This messagebox displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString())
System.Diagnostics.TraceSwitch myTraceSwitch =
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.Level = System.Diagnostics.TraceLevel.Info;
// This message box displays true, because setting the level to
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString());
// This message box displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString());

Developer-Defined 開關

除了提供 BooleanSwitchTraceSwitch 之外,您還可以透過從 Switch 類別繼承並覆寫基類的方法,使用自定義的方法來定義您自己的開關。 如需建立開發人員定義的切換的詳細資訊,請參閱 .NET Framework 參考中的 Switch 類別。

另請參閱