Verwalteter TraceLogging-Schnellstart
Im folgenden Abschnitt werden die grundlegenden Schritte beschrieben, die zum Hinzufügen von TraceLogging zu .NET-Code erforderlich sind.
Voraussetzungen
- .NET 4.6 oder höher.
SimpleTraceLoggingExample.cs
In diesem Beispiel wird veranschaulicht, wie TraceLogging-Ereignisse protokolliert werden, ohne dass manuell eine separate XML-Datei für das Instrumentierungsmanifest erstellt werden muss.
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; }
}
}
Erstellen der EventSource
Bevor Sie Ereignisse protokollieren können, müssen Sie eine instance der EventSource-Klasse erstellen. Der erste Konstruktorparameter identifiziert den Namen dieses Anbieters. Der Anbieter wird automatisch für Sie registriert, wie im Beispiel dargestellt.
private static EventSource log = new EventSource("SimpleTraceLoggingProvider");
Die instance ist statisch, da es jeweils nur einen instance eines bestimmten Anbieters in Ihrer Anwendung geben sollte.
ProtokollablaufverfolgungProtokollierungsereignisse
Nachdem der Anbieter erstellt wurde, protokolliert der folgende Code aus dem obigen Beispiel ein einfaches Ereignis.
log.Write("Event 1"); // write an event with no fields
Protokollieren strukturierter Ereignisnutzlastdaten
Sie können strukturierte Nutzlastdaten definieren, die mit dem Ereignis protokolliert werden. Stellen Sie strukturierte Nutzlastdaten entweder als anonymen Typ oder als instance einer Klasse bereit, die mit dem [EventData]
-Attribut kommentiert wurde, wie im folgenden Beispiel gezeigt.
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
Sie müssen das [EventData]
-Attribut wie unten gezeigt den Von Ihnen definierten Ereignisnutzlastklassen hinzufügen.
[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; }
}
Das -Attribut ersetzt die Notwendigkeit, manuell eine Manifestdatei zur Beschreibung der Ereignisdaten zu erstellen. Nun müssen Sie nur noch einen instance der -Klasse an die EventSource.Write()-Methode übergeben, um das Ereignis und die entsprechenden Nutzlastdaten zu protokollieren.
Zusammenfassung und nächste Schritte
Unter Aufzeichnen und Anzeigen von Ablaufverfolgungsprotokollereignissen finden Sie Informationen zum Erfassen und Anzeigen von TraceLogging-Daten mit den neuesten internen Versionen der Windows Performance Tools (WPT).
Weitere Verwaltete TraceLogging-Beispiele finden Sie unter .NET TraceLogging-Beispiele .