共用方式為


追蹤監聽器

備註

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

使用 追蹤 錯和 TraceSource時,您必須有收集並錄製所傳送訊息的機制。 監聽器會接收到追蹤訊息。 接聽程式的目的是收集、儲存和路由追蹤訊息。 接聽程式會將追蹤輸出導向至適當的目標,例如記錄檔、視窗或文本檔。

接聽程式可供 偵錯追蹤TraceSource 類別使用,每個接聽程式都可以將其輸出傳送至各種接聽程序物件。 以下是常用的預先定義接聽程式:

  • TextWriterTraceListener 會將輸出重新導向至 TextWriter 類別的實例或任何為 Stream 類別的項目。 它也可以寫入主控台或檔案,因為這些是 Stream 類別。

  • EventLogTraceListener 會將輸出重新導向到事件日誌。

  • DefaultTraceListener 發出 WriteWriteLine 訊息至 OutputDebugStringDebugger.Log 方法。 在 Visual Studio 中,這會導致偵錯訊息出現在 [輸出] 視窗中。 失敗 和失敗的 Assert 訊息也會發出至 OutputDebugString Windows API 和 Debugger.Log 方法,也會導致顯示消息框。 此行為是 偵錯追蹤 訊息的預設行為,因為 DefaultTraceListener 自動包含在每個 Listeners 集合中,並且是唯一會自動包含的接聽程式。

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

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

  • XmlWriterTraceListener 追蹤或偵錯輸出當做 XML 編碼的數據 TextWriter 導向 至 或 Stream,例如 FileStream

如果您希望任何除了DefaultTraceListener以外的接聽程式接收偵錯追蹤TraceSource輸出,您必須將它新增至Listeners集合。 如需詳細資訊,請參閱 如何:建立和初始化追蹤接聽程式如何:搭配追蹤接聽程式使用 TraceSource 和篩選接聽程式集合中的任何接聽程式都會從追蹤輸出方法取得相同的訊息。 例如,假設您已設定兩個接聽程式: TextWriterTraceListenerEventLogTraceListener。 每個聆聽者都會接收到相同的訊息。 TextWriterTraceListener 會將輸出導向至數據流,而 EventLogTraceListener 會將輸出導向至事件記錄檔。

下列範例示範如何將輸出傳送至 接聽程式 集合。

' 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");

偵錯和追蹤會共用相同的 接聽 程式集合,因此,如果您在應用程式中將接聽程序物件新增至 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));

Developer-Defined 接聽程式

您可以繼承自 TraceListener 基類,並使用自定義方法覆寫其方法,以定義自己的接聽程式。 如需建立由開發人員定義的接聽程式的詳細資訊,請參閱 TraceListener .NET Framework 參考。

另請參閱