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


Краткое руководство по traceLogging

В следующем разделе описаны основные действия, необходимые для добавления 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 .