Verwaltete TraceLogging-Schnellstart

Im folgenden Abschnitt werden die grundlegenden Schritte beschrieben, die zum Hinzufügen von TraceLogging zu verwaltetem Code erforderlich sind.

Voraussetzungen

  • Windows 10

SimpleTraceLoggingExample.cs

In diesem Beispiel wird veranschaulicht, wie Tracelogging-Ereignisse protokolliert werden, ohne manuell eine separate INSTRUMENTIERUNGsmanifest-XML-Datei erstellen zu müssen.

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 Instanz der EventSource-Klasse erstellen. Der erste Konstruktorparameter identifiziert den Namen dieses Anbieters. Der Anbieter wird automatisch für Sie registriert, wie im Beispiel gezeigt.

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

Die Instanz ist statisch, da in Ihrer Anwendung immer nur eine Instanz eines bestimmten Anbieters gleichzeitig sein sollte.

Protokollieren von Ablaufverfolgungsereignissen

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 Instanz einer Klasse zur Verfügung, die mit dem -Attribut kommentiert wurde, wie [EventData] 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 den Ereignisnutzlastklassen hinzufügen, die Sie wie unten gezeigt definieren.

    [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 zu erstellen, um die Ereignisdaten zu beschreiben. Nun müssen Sie nur noch eine Instanz der -Klasse an die EventSource.Write()-Methode übergeben, um das Ereignis und die entsprechenden Nutzlastdaten zu protokollieren.

Zusammenfassung und nächste Schritte

Informationen zum Erfassen und Anzeigen von TraceLogging-Daten mithilfe der neuesten internen Versionen der Windows Performance Tools (WPT) finden Sie unter Aufzeichnen und Anzeigen von TraceLogging-Ereignissen.

Weitere verwaltete TraceLogging-Beispiele finden Sie unter Beispiele für die .NET-Ablaufverfolgung.