Прослушиватели трассировки
При использовании классов 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.
См. также
Ссылки
Основные понятия
Введение. Подготовка к инструментированию и трассировка.