Практическое руководство. Создание и инициализация прослушивателей трассировкиHow to: Create and Initialize Trace Listeners

Классы System.Diagnostics.Debug и System.Diagnostics.Trace отправляют сообщения объектам, которые называются прослушивателями. Эти объекты получают и обрабатывают эти сообщения.The System.Diagnostics.Debug and System.Diagnostics.Trace classes send messages to objects called listeners that receive and process these messages. Один из таких прослушивателей, System.Diagnostics.DefaultTraceListener, автоматически создается и инициализируется при включении трассировки или отладки.One such listener, the System.Diagnostics.DefaultTraceListener, is automatically created and initialized when tracing or debugging is enabled. Если требуется направить выходные данные типа Trace или Debug каким-либо дополнительным источникам, необходимо создать и инициализировать дополнительные прослушиватели трассировки.If you want Trace or Debug output to be directed to any additional sources, you must create and initialize additional trace listeners.

Создаваемые прослушиватели должны соответствовать индивидуальным требованиям приложения.The listeners you create should reflect your application's needs. Например, если требуется текстовая запись всех выходных данных трассировки, создайте прослушиватель TextWriterTraceListener, который будет записывать все выходные данные в новый текстовый файл, если эта функция включена.For example, if you want a text record of all trace output, create a TextWriterTraceListener listener, which writes all output to a new text file when it is enabled. С другой стороны, если требуется просмотреть выходные данные только во время исполнения приложения, создайте прослушиватель ConsoleTraceListener, направляющий все выходные данные в окно консоли.On the other hand, if you want to view output only during application execution, create a ConsoleTraceListener listener, which directs all output to a console window. Прослушиватель EventLogTraceListener может направлять выходные данные трассировки в журнал событий.The EventLogTraceListener can direct trace output to an event log. Дополнительные сведения см. в разделе прослушиватели трассировки.For more information, see Trace Listeners.

Можно создать прослушиватели трассировки в файле конфигурации приложения или в собственном коде.You can create trace listeners in an application configuration file or in your code. Рекомендуется использовать файлы конфигурации приложения, так как они позволяют добавлять, изменять или удалять прослушиватели трассировки без внесения изменений в код.We recommend the use of application configuration files, because they let you add, modify, or remove trace listeners without having to change your code.

Создание и использование прослушивателя трассировки с использованием файла конфигурацииTo create and use a trace listener by using a configuration file

  1. Объявите прослушиватель трассировки в файле конфигурации приложения.Declare your trace listener in your application configuration file. Если создаваемый прослушиватель требует какие-либо другие объекты, также объявите их.If the listener you are creating requires any other objects, declare them as well. В следующем примере показано создание прослушивателя с именем myListener, записывающего данные в текстовый файл TextWriterOutput.log.The following example shows how to create a listener called myListener that writes to the text file 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 в своем коде для записи сообщения в прослушиватели трассировки.Use the Trace class in your code to write a message to the trace listeners.

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

Создание и использование прослушивателя трассировки в кодеTo create and use a trace listener in code

  • Добавьте прослушиватель трассировки в коллекцию Listeners и отправьте сведения трассировки прослушивателям.Add the trace listener to the Listeners collection and send trace information to the 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();
    

    - или -- or -

  • Если не нужно, чтобы прослушиватель получал выходные данные трассировки, не добавляйте его в коллекцию Listeners.If you do not want your listener to receive trace output, do not add it to the Listeners collection. Допускается выдача выходных данных через прослушиватель независимо от коллекции Listeners путем вызова собственных методов вывода прослушивателя.You can emit output through a listener independent of the Listeners collection by calling the listener's own output methods. В следующем примере показано, как выполнить запись строки в прослушиватель, не являющийся частью коллекции Listeners.The following example shows how to write a line to a listener that is not in the Listeners collection.

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

См. такжеSee also