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


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

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

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

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

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

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

  • ConsoleTraceListener направляет вывод отладки и трассировки в стандартный поток вывода или стандартный поток сообщений об ошибках. 

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

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

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

В следующем примере показано, как отправить вывод в коллекцию Listeners:

' 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");

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

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

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

Прослушиватели, определяемые разработчиком

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

См. также

Ссылки

TextWriterTraceListener

EventLogTraceListener

DefaultTraceListener

TraceListener

Основные понятия

Введение. Подготовка к инструментированию и трассировка.

Переключатели трассировки

Другие ресурсы

Трассировка и оборудование приложений