HOW TO:建立和初始設定追蹤接聽項
System.Diagnostics.Debug 和 System.Diagnostics.Trace 類別將訊息傳送至稱為接聽程式的物件,由接聽程式物件負責接收和處理這些訊息。 這類接聽程式 (例如 System.Diagnostics.DefaultTraceListener) 會在啟用追蹤或偵錯時自動建立和初始化。 如果您要將 Trace 或 Debug 輸出導向任何其他來源,則必須建立和初始化其他的追蹤接聽程式。
您建立的接聽程式應反映出您應用程式的需求。 例如,如果您想要所有追蹤輸出的文字記錄,則建立 TextWriterTraceListener 接聽程式,它會在啟用時將所有輸出寫入新的文字檔中。 另一方面,如果您只想要在應用程式執行期間檢視輸出,則建立 ConsoleTraceListener 接聽程式,它會將所有輸出導向主控台視窗。 EventLogTraceListener 可以將追蹤輸出導向事件記錄檔。 如需詳細資訊,請參閱追蹤接聽程式。
您可以在應用程式組態檔或程式碼中建立追蹤接聽程式。 建議您使用應用程式組態檔,因為這些檔案可讓您加入、修改或移除追蹤接聽程式,而不必變更程式碼。
若要使用組態檔建立及使用追蹤接聽程式
在應用程式組態檔中宣告追蹤接聽程式。 如果您要建立的接聽程式需要任何其他物件,也請宣告這些物件。 下列範例示範如何建立用來寫入文字檔 TextWriterOutput.log 且稱為 myListener 的接聽程式。
<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();