Avvio rapido gestito di TraceLogging

Nella sezione seguente vengono descritti i passaggi di base necessari per aggiungere TraceLogging al codice .NET.

Prerequisiti

  • .NET 4.6 o versione successiva.

SimpleTraceLoggingExample.cs

In questo esempio viene illustrato come registrare gli eventi TraceLogging senza la necessità di creare manualmente un file XML manifesto di strumentazione separato.

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

Creare EventSource

Prima di poter registrare gli eventi, è necessario creare un'istanza della classe EventSource. Il primo parametro del costruttore identifica il nome di questo provider. Il provider viene registrato automaticamente come illustrato nell'esempio.

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

L'istanza è statica perché deve essere presente solo un'istanza di un provider specifico nell'applicazione alla volta.

Eventi TraceLogging log

Dopo aver creato il provider, il codice seguente dell'esempio precedente registra un evento semplice.

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

Dati del payload degli eventi strutturati del log

È possibile definire i dati del payload strutturati registrati con l'evento. Specificare i dati del payload strutturato come tipo anonimo o come istanza di una classe che è stata annotata con l'attributo, come illustrato nell'esempio [EventData] seguente.

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

È necessario aggiungere l'attributo alle classi payload dell'evento [EventData] definite come illustrato di seguito.

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

L'attributo sostituisce la necessità di creare manualmente un file manifesto per descrivere i dati dell'evento. Ora è necessario passare un'istanza della classe al metodo EventSource.Write() per registrare l'evento e i dati del payload corrispondenti.

Riepilogo e passaggi successivi

Per informazioni su come acquisire e visualizzare i dati traceLogging usando le versioni interne più recenti di Windows Performance Tools (WPT).

Per altri esempi di TraceLogging gestito, vedere Esempi di traceLogging .NET .