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


Прослушиватели трассировки

Замечание

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

При использовании трассировки, отладки и TraceSource, необходимо иметь механизм для сбора и записи отправленных сообщений. Сообщения трассировки получают прослушиватели. Цель слушателя заключается в сборе сообщений трассировки, их хранении и маршрутизации. Прослушиватели направляют выходные данные трассировки в соответствующий целевой объект, например журнал, окно или текстовый файл.

Слушатели доступны для классов Debug, Trace и TraceSource, каждый из которых может отправлять свои выходные данные в различные объекты слушателей. Ниже приведены обычно используемые предопределенные прослушиватели.

  • Объект TextWriterTraceListener перенаправляет выходные данные на экземпляр TextWriter класса или на все, что является классом Stream . Он также может записывать данные в консоль или в файл, так как это Stream классы.

  • Выходные EventLogTraceListener данные перенаправляются в журнал событий.

  • DefaultTraceListener выводит сообщения Write и WriteLine в OutputDebugString и в метод Debugger.Log. В Visual Studio это приводит к отображению сообщений отладки в окне вывода. Сбой и неудачные сообщения Assert также отправляются в API Windows OutputDebugString и метод Debugger.Log , а также вызывают отображение поля сообщения. Это поведение по умолчанию для Debug и Trace сообщений, так как DefaultTraceListener автоматически включается в каждую коллекцию Listeners и является единственным слушателем, добавляемым автоматически.

  • Направляет ConsoleTraceListener результаты трассировки или отладки в стандартный вывод или стандартный поток ошибок.

  • DelimitedListTraceListener перенаправляет выходные данные трассировки или отладки к текстовому записывающему устройству, например, к потоковому записывающему устройству, или к потоку, например, файловому потоку. Выходные данные трассировки отображаются в текстовом формате с разделителями, заданном свойством Delimiter .

  • XmlWriterTraceListener направляет трассировку или отладку выходных данных как XML-кодированные данные в TextWriter или в Stream, таких как FileStream.

Если вы хотите, чтобы помимо DefaultTraceListener какой-либо другой слушатель получал выходные данные отладки, трассировки и TraceSource, необходимо добавить его в коллекцию Listeners. Дополнительные сведения см. в статье "Практическое руководство. Создание и инициализация прослушивателей трассировки и практическое руководство. Использование TraceSource и фильтров с прослушивателями трассировки". Любой слушатель в коллекции прослушивателей получает те же сообщения из методов трассировки. Например, предположим, что вы настроили два прослушивателя: TextWriterTraceListener и EventLogTraceListener. Каждый прослушиватель получает одно и то же сообщение. TextWriterTraceListener будет направлять выходные данные в поток, а EventLogTraceListener будет направлять выходные данные в журнал событий.

В следующем примере показано, как отправлять выходные данные в коллекцию прослушивателей .

' Use this example when debugging.
Debug.WriteLine("Error in Widget 42")
' Use this example when tracing.
Trace.WriteLine("Error in Widget 42")
// Use this example when debugging.
System.Diagnostics.Debug.WriteLine("Error in Widget 42");
// Use this example when tracing.
System.Diagnostics.Trace.WriteLine("Error in Widget 42");

Отладка и трассировка совместно используют одну и ту же коллекцию прослушивателей , поэтому при добавлении объекта прослушивателя в коллекцию Debug.Listen в приложение он также добавляется в коллекцию Trace.Listen .

В следующем примере показано, как использовать прослушиватель для отправки сведений отслеживания в консоль.

Trace.Listeners.Clear()
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add(
   new System.Diagnostics.TextWriterTraceListener(Console.Out));

прослушиватели Developer-Defined

Вы можете определить собственные прослушиватели, наследуя базовый класс TraceListener и переопределяя его методы вашими собственными методами. Дополнительные сведения о создании определяемых разработчиком прослушивателей см. TraceListener в справочнике по .NET Framework.

См. также