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

注意

本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。

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();
    

请参阅