Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующем разделе описаны основные действия, необходимые для добавления TraceLogging в код .NET.
Предварительные требования
- .NET 4.6 или более поздней версии.
SimpleTraceLoggingExample.cs
В этом примере показано, как регистрировать события TraceLogging без необходимости вручную создавать отдельный XML-файл манифеста инструментирования.
using System;
using System.Diagnostics.Tracing;
namespace SimpleTraceLoggingExample
{
class Program
{
private static EventSource log = new EventSource("SimpleTraceLoggingProvider");
static void Main(string[] args)
{
log.Write("Event 1"); // write an event with no fields
log.Write("Event 2", new { someEventData = DateTime.Now }); // Sending an anonymous type as event data
ExampleStructuredData EventData = new ExampleStructuredData() { TransactionID = 1234, TransactionDate = DateTime.Now };
log.Write("Event 3", EventData); // Sending a class decorated with [EventData] as event data
}
}
[EventData] // [EventData] makes it possible to pass an instance of the class as an argument to EventSource.Write()
public sealed class ExampleStructuredData
{
public int TransactionID { get; set; }
public DateTime TransactionDate { get; set; }
}
}
Создание EventSource
Перед ведением журнала событий необходимо создать экземпляр класса EventSource. Первый параметр конструктора определяет имя этого поставщика. Поставщик автоматически регистрируется, как показано в примере.
private static EventSource log = new EventSource("SimpleTraceLoggingProvider");
Экземпляр является статическим, так как в приложении одновременно должен быть только один экземпляр определенного поставщика.
События журнала TraceLogging
После создания поставщика следующий код из приведенного выше примера регистрирует простое событие.
log.Write("Event 1"); // write an event with no fields
Полезные данные структурированных событий журнала
Можно определить структурированные полезные данные, регистрируемые с помощью события . Предоставьте структурированные полезные данные либо как анонимный тип, либо как экземпляр класса, который был помечен атрибутом [EventData] , как показано в следующем примере.
log.Write("Event 2", new { someEventData = DateTime.Now }); // Sending an anonymous type as event data
ExampleStructuredData EventData = new ExampleStructuredData() { TransactionID = 1234, TransactionDate = DateTime.Now };
log.Write("Event 3", EventData); // Sending a class decorated with [EventData] as event data
Необходимо добавить атрибут в [EventData] классы полезных данных событий, которые вы определяете, как показано ниже.
[EventData] // [EventData] makes it possible to pass an instance of the class as an argument to EventSource.Write()
public sealed class ExampleStructuredData
{
public int TransactionID { get; set; }
public DateTime TransactionDate { get; set; }
}
Атрибут заменяет необходимость вручную создать файл манифеста для описания данных события. Теперь достаточно передать экземпляр класса методу EventSource.Write() для регистрации события и соответствующих полезных данных.
Сводка и дальнейшие действия
Сведения о сборе и просмотре данных TraceLogging с помощью последних внутренних версий средств производительности Windows (WPT) см. в статье Запись и отображение событий TraceLogging .
Дополнительные примеры для управляемых traceLogging см. в разделе Примеры traceLogging для .NET .