作法:建立和初始化追蹤接聽項
注意
本文專屬於 .NET Framework。 其不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。
System.Diagnostics.Debug 和 System.Diagnostics.Trace 類別會將訊息傳送給名稱為接聽程式的物件,以接收和處理這些訊息。 System.Diagnostics.DefaultTraceListener 就是這類接聽程式之一,其會在啟用追蹤或偵錯時自動建立與初始化。 如果您要將 Trace 或 Debug 輸出導向任何其他來源,您必須建立和初始化其他的追蹤接聽程式。
您建立的接聽程式應反映出您應用程式的需求。 例如,如果您想要取得所有追蹤輸出的文字記錄,可建立 TextWriterTraceListener 接聽程式,以在啟用時,將所有輸出寫入新的文字檔。 反之,如果您只想在應用程式執行期間檢視輸出,可建立 ConsoleTraceListener 接聽程式,將所有輸出導向主控台視窗。 EventLogTraceListener 可以將追蹤輸出導向事件記錄檔。 如需詳細資訊,請參閱追蹤接聽項。
您可以在應用程式組態檔或程式碼中建立追蹤接聽項。 建議您使用應用程式組態檔,因為它們可讓您新增、修改或移除追蹤接聽程式,而不必變更程式碼。
若要使用組態檔建立及使用追蹤接聽程式
在應用程式組態檔中,宣告您的追蹤接聽程式。 如果您要建立的接聽程式需要任何其他物件,請一併將其宣告。 下列範例示範如何建立名稱為
myListener
的接聽程式,以進行文字檔TextWriterOutput.log
的寫入作業。<configuration> <system.diagnostics> <trace autoflush="false" indentsize="4"> <listeners> <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" /> <remove name="Default" /> </listeners> </trace> </system.diagnostics> </configuration>
使用程式碼中的 Trace 類別,將訊息寫入追蹤接聽程式。
Trace.TraceInformation("Test message.") ' You must close or flush the trace to empty the output buffer. Trace.Flush()
Trace.TraceInformation("Test message."); // You must close or flush the trace to empty the output buffer. Trace.Flush();
若要建立及使用程式碼中的追蹤接聽程式
將追蹤接聽程式加入 Listeners 集合,並傳送追蹤資訊給接聽程式。
Trace.Listeners.Add(New TextWriterTraceListener("TextWriterOutput.log", "myListener")) Trace.TraceInformation("Test message.") ' You must close or flush the trace to empty the output buffer. Trace.Flush()
Trace.Listeners.Add(new TextWriterTraceListener("TextWriterOutput.log", "myListener")); Trace.TraceInformation("Test message."); // You must close or flush the trace to empty the output buffer. Trace.Flush();
- 或 -
如果您不想讓接聽程式接收追蹤輸出,請不要將它加入 Listeners 集合。 您可以呼叫接聽程式自己的輸出方法,透過獨立於 Listeners 集合的接聽程式來發出輸出。 下列範例示範如何將指令行寫入不在 Listeners 集合內的接聽程式。
Dim myListener As New TextWriterTraceListener("TextWriterOutput.log", "myListener") myListener.WriteLine("Test message.") ' You must close or flush the trace listener to empty the output buffer. myListener.Flush()
TextWriterTraceListener myListener = new TextWriterTraceListener("TextWriterOutput.log", "myListener"); myListener.WriteLine("Test message."); // You must close or flush the trace listener to empty the output buffer. myListener.Flush();
另請參閱
- 追蹤接聽項
- 追蹤參數
- 如何:將追蹤陳述式新增至應用程式碼
- 追蹤和檢測應用程式 (機器翻譯)