如何:创建和初始化跟踪侦听器

System.Diagnostics.DebugSystem.Diagnostics.Trace 类将消息发送给将接收和处理这些消息的对象(称为侦听器)。 当启用跟踪或调试后,将自动创建并初始化这样一个侦听器:System.Diagnostics.DefaultTraceListener。 如果需要将 TraceDebug 输出定向到任何其他源,则必须创建并初始化附加的跟踪侦听器。

所创建的侦听器应反映您应用程序的需要。 例如,如果您想要所有跟踪输出的文本记录,请创建 TextWriterTraceListener 侦听器,它会在启用后将所有输出写入新的文本文件。 另一方面,如果您只需要在执行应用程序期间查看输出,请创建 ConsoleTraceListener 侦听器,它会将所有输出定向至控制台窗口。 EventLogTraceListener 可将跟踪输出定向至事件日志。 有关更多信息,请参见跟踪侦听器

您可以在应用程序配置文件或代码中创建跟踪侦听器。 建议使用应用程序配置文件,因为它们允许您在不更改代码的情况下添加、修改或移除跟踪侦听器。

通过配置文件创建和使用跟踪侦听器

  1. 在应用程序配置文件中声明跟踪侦听器。 如果您创建的侦听器需要任何其他对象,也请对其进行声明。 下面的示例显示如何创建名为 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>
    
  2. 在代码中使用 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();
    

请参见

任务

如何:在应用程序中跟踪代码

如何:向应用程序代码添加跟踪语句

概念

跟踪侦听器

跟踪开关

其他资源

跟踪应用程序和在应用程序中插入检测点