如何:创建和初始化跟踪侦听器
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();