Freigeben über


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 .