Поделиться через


Практическое руководство. Создание и инициализация прослушивателей трассировки

Примечание.

Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.

Классы System.Diagnostics.Debug и System.Diagnostics.Trace отправляют сообщения объектам, которые называются прослушивателями. Эти объекты получают и обрабатывают эти сообщения. Один из таких прослушивателей, System.Diagnostics.DefaultTraceListener, автоматически создается и инициализируется при включении трассировки или отладки. Если требуется направить выходные данные типа Trace или Debug каким-либо дополнительным источникам, необходимо создать и инициализировать дополнительные прослушиватели трассировки.

Создаваемые прослушиватели должны соответствовать индивидуальным требованиям приложения. Например, если требуется текстовая запись всех выходных данных трассировки, создайте прослушиватель 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();
    

См. также