追蹤接聽項

使用 TraceDebugTraceSource 時,您必須具有收集和記錄所傳送訊息的機制。 追蹤訊息由「接聽程式」負責接收。 接聽項的用途是收集、儲存和傳送追蹤訊息。 接聽項會將追蹤輸出導向至適當的目標,例如記錄檔、視窗或文字檔。

接聽程式可供 DebugTraceTraceSource 類別使用,其中每一項都可以將輸出傳送至各種不同的接聽程式物件。 以下是常用的預先定義接聽程式:

  • TextWriterTraceListener 會將輸出重新導向至 TextWriter 類別的執行個體,或重新導向至任何 Stream 類別。 因為這些是 Stream 類別,所以還可寫入至主控台或檔案。

  • EventLogTraceListener會將輸出重新導向至事件記錄檔。

  • DefaultTraceListener 會發出 WriteWriteLine 訊息至 OutputDebugStringDebugger.Log 方法。 在 Visual Studio 中,這會造成 [輸出] 視窗中出現偵錯訊息。 Fail 和失敗的 Assert 訊息也會發送至 OutputDebugString Windows API 和 Debugger.Log 方法,這也造成會顯示訊息方塊。 因為 DefaultTraceListener 會被自動納入所有的 Listeners 集合,並且這是唯一被自動納入的接聽項,所以這種行為是 DebugTrace 訊息的預設行為。

  • ConsoleTraceListener 會將追蹤或偵錯輸出導向至標準輸出或標準錯誤資料流。

  • DelimitedListTraceListener 會將追蹤或偵錯輸出導向文字寫入器,例如資料流寫入器,或是導向資料流,例如檔案資料流。 此追蹤輸出使用分隔的文字格式,該格式使用由 Delimiter 屬性指定的分隔符號。

  • XmlWriterTraceListener 會將追蹤或偵錯輸出當成 XML 編碼資料導向至 TextWriterStream,例如 FileStream

如果您要 DefaultTraceListener 以外的接聽程式接收 DebugTraceTraceSource 輸出,則您必須將該接聽程式新增到 Listeners 集合。 如需詳細資訊,請參閱如何:建立和初始設定追蹤接聽項如何:使用 TraceSource 和含有追蹤接聽項的篩選條件Listeners 集合中的任何接聽程式都會自追蹤輸出方法取得相同的訊息。 例如,假設您設定兩個接聽項:TextWriterTraceListenerEventLogTraceListener。 則每個接聽項都會收到相同的訊息。 TextWriterTraceListener 會將其輸出導向至資料流,而 EventLogTraceListener 則會將其輸出導向至事件記錄檔。

下列範例顯示如何將輸出傳送至 Listeners 集合。

' Use this example when debugging.  
Debug.WriteLine("Error in Widget 42")  
' Use this example when tracing.  
Trace.WriteLine("Error in Widget 42")  
// Use this example when debugging.  
System.Diagnostics.Debug.WriteLine("Error in Widget 42");  
// Use this example when tracing.  
System.Diagnostics.Trace.WriteLine("Error in Widget 42");  

偵錯和追蹤共用同一個 Listeners 集合,因此如果您在應用程式中,將接聽程式物件新增到 Debug.Listeners 集合,則也會將它新增到 Trace.Listeners 集合。

下列範例顯示如何使用接聽程式將追蹤資訊傳送至主控台:

Trace.Listeners.Clear()  
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))  
System.Diagnostics.Trace.Listeners.Clear();  
System.Diagnostics.Trace.Listeners.Add(  
   new System.Diagnostics.TextWriterTraceListener(Console.Out));  

開發人員定義的接聽程式

您可繼承自 TraceListener 基底類別並用自訂方法來覆寫其方法,定義自己的接聽程式。 如需有關如何建立開發人員定義之接聽程式的詳細資訊,請參閱 .NET Framework 參考中的 TraceListener

另請參閱