Démarrage rapide managé traceLogging
La section suivante décrit les étapes de base nécessaires pour ajouter TraceLogging au code .NET.
Prérequis
- .NET 4.6 ou version ultérieure.
SimpleTraceLoggingExample.cs
Cet exemple montre comment journaliser 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 eventSource
Avant de pouvoir journaliser 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");
Le instance est statique, car il ne doit y avoir qu’un seul instance d’un fournisseur spécifique dans votre application à la fois.
Événements Log TraceLogging
Une fois le fournisseur créé, le code suivant de l’exemple ci-dessus consigne un événement simple.
log.Write("Event 1"); // write an event with no fields
Données de charge utile d’événements structurés du journal
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 sous forme de type anonyme ou de instance d’une classe annotée avec l’attribut[EventData]
, comme illustré 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. Il vous suffit maintenant de passer un instance de la classe à la méthode EventSource.Write() pour journaliser l’événement et les données de charge utile correspondantes.
Résumé et étapes suivantes
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 Enregistrer et afficher les événements TraceLogging .
Consultez Exemples de traceLogging .NET pour plus d’exemples de traceLogging managés.