Início Rápido Gerenciado do TraceLogging

A seção a seguir descreve as etapas básicas necessárias para adicionar TraceLogging ao código .NET.

Pré-requisitos

  • .NET 4.6 ou posterior.

SimpleTraceLoggingExample.cs

Este exemplo demonstra como registrar eventos traceLogging sem a necessidade de criar manualmente um arquivo XML de manifesto de instrumentação separado.

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

Criar o EventSource

Antes de poder registrar eventos, você deve criar uma instância da classe EventSource. O primeiro parâmetro de construtor identifica o nome desse provedor. O provedor é registrado automaticamente para você, conforme ilustrado no exemplo.

private static EventSource log = new EventSource("SimpleTraceLoggingProvider");

A instância é estática porque deve haver apenas uma instância de um provedor específico em seu aplicativo por vez.

Eventos log traceLogging

Depois que o provedor é criado, o código a seguir do exemplo acima registra um evento simples.

log.Write("Event 1"); // write an event with no fields

Registrar dados de conteúdo de evento estruturado

Você pode definir dados de conteúdo estruturados que são registrados com o evento. Forneça dados de conteúdo estruturados como um tipo anônimo ou como uma instância de uma classe que foi anotada com o [EventData] atributo , conforme mostrado no exemplo a seguir.

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

Você deve adicionar o [EventData] atributo às classes de conteúdo de evento que você definir, conforme mostrado abaixo.

[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; }
}

O atributo substitui a necessidade de criar manualmente um arquivo de manifesto para descrever os dados do evento. Agora tudo o que você precisa fazer é passar uma instância da classe para o método EventSource.Write() para registrar o evento e os dados de conteúdo correspondentes.

Resumo e próximas etapas

Consulte Registrar e exibir eventos de rastreamento de log para obter informações sobre como capturar e exibir dados do TraceLogging usando as versões internas mais recentes do WPT (Windows Performance Tools).

Confira Exemplos de TraceLogging do .NET para obter mais exemplos de TraceLogging gerenciados.