Freigeben über


TraceLogging Managed Quick Start

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 eine separate XML-Manifestdatei für die Instrumentierung 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 Instanz 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 Instanz ist statisch, da jeweils nur eine Instanz eines bestimmten Anbieters in Ihrer Anwendung vorhanden sein sollte.

Protokollprotokollierungsereignisse

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 von strukturierten 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 bereit, die mit dem attribut [EventData] 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 attribut [EventData] zu Ereignisnutzlastklassen hinzufügen, die Sie wie unten dargestellt 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, eine Manifestdatei manuell zu erstellen, um die Ereignisdaten zu beschreiben. Jetzt 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-Ereignissen finden Sie unter zum Erfassen und Anzeigen von TraceLogging-Daten mithilfe der neuesten internen Versionen der Windows Performance Tools (WPT).

Weitere Verwaltete TraceLogging-Beispiele finden Sie unter .NET TraceLogging Examples.