Partager via


Démarrage rapide managé de TraceLogging

La section suivante décrit les étapes de base requises pour ajouter TraceLogging au code .NET.

Conditions préalables

  • .NET 4.6 ou version ultérieure.

SimpleTraceLoggingExample.cs

Cet exemple montre comment consigner les événements TraceLogging sans avoir à créer manuellement un fichier XML de manifeste d’instrumentation distinct.

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

Créer l’EventSource

Avant de pouvoir consigner les événements, vous devez créer une instance de la classe EventSource. Le premier paramètre de constructeur identifie le nom de ce fournisseur. Le fournisseur est automatiquement inscrit pour vous, comme illustré dans l’exemple.

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

L’instance est statique, car il ne doit y avoir qu’une seule instance d’un fournisseur spécifique dans votre application à la fois.

Journaliser les événements TraceLogging

Une fois le fournisseur créé, le code suivant de l’exemple ci-dessus enregistre un événement simple.

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

Journaliser les données de charge utile des événements structurés

Vous pouvez définir des données de charge utile structurées journalisées avec l’événement. Fournissez des données de charge utile structurées en tant que type anonyme ou en tant qu’instance d’une classe annotée avec l’attribut [EventData], comme indiqué dans l’exemple suivant.

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

Vous devez ajouter l’attribut [EventData] aux classes de charge utile d’événement que vous définissez comme indiqué ci-dessous.

[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’attribut remplace la nécessité de créer manuellement un fichier manifeste pour décrire les données d’événement. Vous devez maintenant passer une instance de la classe à la méthode EventSource.Write() pour consigner l’événement et les données de charge utile correspondantes.

Résumé et étapes suivantes

Consultez Record and Display TraceLogging Events pour plus d’informations sur la capture et l’affichage des données TraceLogging à l’aide des dernières versions internes de WINDOWS Performance Tools (WPT).

Consultez exemples traceLogging .NET pour obtenir des exemples traceLogging managés.