Практическое руководство. Создание и инициализация прослушивателей трассировки
Примечание.
Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.
Классы System.Diagnostics.Debug и System.Diagnostics.Trace отправляют сообщения объектам, которые называются прослушивателями. Эти объекты получают и обрабатывают эти сообщения. Один из таких прослушивателей, System.Diagnostics.DefaultTraceListener, автоматически создается и инициализируется при включении трассировки или отладки. Если требуется направить выходные данные типа Trace или Debug каким-либо дополнительным источникам, необходимо создать и инициализировать дополнительные прослушиватели трассировки.
Создаваемые прослушиватели должны соответствовать индивидуальным требованиям приложения. Например, если требуется текстовая запись всех выходных данных трассировки, создайте прослушиватель TextWriterTraceListener, который будет записывать все выходные данные в новый текстовый файл, если эта функция включена. С другой стороны, если требуется просмотреть выходные данные только во время исполнения приложения, создайте прослушиватель ConsoleTraceListener, направляющий все выходные данные в окно консоли. Прослушиватель EventLogTraceListener может направлять выходные данные трассировки в журнал событий. Дополнительные сведения см. в разделе Прослушиватели трассировки.
Можно создать прослушиватели трассировки в файле конфигурации приложения или в собственном коде. Рекомендуется использовать файлы конфигурации приложения, так как они позволяют добавлять, изменять или удалять прослушиватели трассировки без внесения изменений в код.
Создание и использование прослушивателя трассировки с использованием файла конфигурации
Объявите прослушиватель трассировки в файле конфигурации приложения. Если создаваемый прослушиватель требует какие-либо другие объекты, также объявите их. В следующем примере показано создание прослушивателя с именем
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>
Используйте класс 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();