Freigeben über


ETW-Ablaufverfolgung

Das AnalyticTrace-Beispiel veranschaulicht das Implementieren der End-to-End-Ablaufverfolgung (E2E) mit Event Tracing for Windows (ETW) und dem in diesem Beispiel bereitgestellten ETWTraceListener. Das Beispiel basiert auf den ersten Schritten und schließt die ETW-Ablaufverfolgung ein.

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

In diesem Beispiel wird davon ausgegangen, dass Sie mit Ablaufverfolgung und Nachrichtenprotokollierung vertraut sind.

Alle Ablaufverfolgungsquellen im System.Diagnostics-Ablaufverfolgungsmodell können über mehrere Ablaufverfolgungslistener verfügen, die bestimmen, wann und wie die Daten verfolgt werden. Der Typ des Listeners definiert das Format, in dem Ablaufverfolgungsdaten protokolliert werden. Im folgenden Codebeispiel wird das Hinzufügen eines Listeners zur Konfiguration dargestellt.

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel"
             switchValue="Verbose,ActivityTracing"
             propagateActivity="true">
            <listeners>
                <add type=
                   "System.Diagnostics.DefaultTraceListener"
                   name="Default">
                   <filter type="" />
                </add>
                <add name="ETW">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add type=
            "Microsoft.ServiceModel.Samples.EtwTraceListener, ETWTraceListener"
            name="ETW" traceOutputOptions="Timestamp">
            <filter type="" />
       </add>
    </sharedListeners>
</system.diagnostics>

Damit dieser Listener verwendet werden kann, muss eine ETW-Ablaufverfolgungssitzung gestartet werden. Diese Sitzung kann mithilfe von Logman.exe oder Tracelog.exe gestartet werden. Dieses Beispiel umfasst die Datei "SetupETW.bat", sodass Sie die ETW-Ablaufverfolgungssitzung einrichten können. Außerdem wird die Datei "CleanupETW.bat" zum Schließen der Sitzung und Abschließen der Protokolldatei bereitgestellt.

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas. Weitere Informationen zu diesen Tools finden Sie unter https://go.microsoft.com/fwlink/?LinkId=56580.

Bei der Verwendung von ETWTraceListener werden Ablaufverfolgungen in binären ETL-Dateien protokolliert. Wenn die ServiceModel-Ablaufverfolgung aktiviert ist, werden alle generierten Ablaufverfolgungen in der gleichen Datei angezeigt. Verwenden Sie das Service Trace Viewer-Tool (SvcTraceViewer.exe) zum Anzeigen von ETL- und SVCLOG-Protokolldateien. Der Viewer erstellt eine End-to-End-Ansicht des Systems, mit der eine Nachricht von der Quelle zum Ziel und zur Verwendung verfolgt werden kann.

Der ETW-Ablaufverfolgungslistener unterstützt zirkuläre Protokollierung. Klicken Sie zum Aktivieren dieses Features auf Start, Ausführen, und geben Sie anschließend cmd ein, um eine Befehlskonsole zu starten. Ersetzen Sie im folgenden Befehl den <logfilename>-Parameter durch den Namen der Protokolldatei.

logman create trace Wcf -o <logfilename> -p "{411a0819-c24b-428c-83e2-26b41091702e}" -f bincirc -max 1000

Der -f-Schalter und der -max-Schalter sind optional. Sie geben das binäre zirkuläre Format bzw. die maximale Protokollgröße von 1000 MB an. Mit dem -p-Schalter wird der Ablaufverfolgungsanbieter angegeben. In diesem Beispiel ist "{411a0819-c24b-428c-83e2-26b41091702e}" die GUID für "XML ETW Sample Provider".

Geben Sie den folgenden Befehl ein, um die Sitzung zu starten.

logman start Wcf

Nach Abschluss der Protokollierung können Sie die Sitzung mit dem folgenden Befehl beenden.

logman stop Wcf

Bei diesem Prozess werden binäre zirkuläre Protokolle generiert, die mit einem beliebigen Tool verarbeitet werden können, beispielsweise Service Trace Viewer-Tool (SvcTraceViewer.exe) oder Tracerpt.

Im Beispiel Zirkuläre Ablaufverfolgung finden Sie außerdem weitere Informationen zu einem alternativen Listener zum Ausführen der zirkulären Protokollierung.

So können Sie das Beispiel einrichten, erstellen und ausführen

  1. Stellen Sie sicher, dass Sie das einmalige Setupverfahren für die Windows Communication Foundation-Beispiele ausgeführt haben.

  2. Befolgen Sie zum Erstellen der Projektmappe die Anweisungen unter Erstellen der Windows Communication Foundation-Beispiele.

    Hinweis

    Zur Verwendung der Befehle RegisterProvider.bat, SetupETW.bat und CleanupETW.bat muss die Ausführung unter einem lokalen Administratorkonto erfolgen. Wenn Sie mit Windows Vista oder höher arbeiten, müssen Sie auch die Eingabeaufforderung mit erweiterten Berechtigungen ausführen. Klicken Sie hierzu mit der rechten Maustaste auf das Symbol für die Eingabeaufforderung, und klicken Sie dann auf Als Administrator ausführen.

  3. Führen Sie vor dem Ausführen des Beispiels RegisterProvider.bat auf dem Client und dem Server aus. Dadurch wird die resultierende Datei ETWTracingSampleLog.etl zum Generieren von Ablaufverfolgungen eingerichtet, die von Service Trace Viewer angezeigt werden können. Diese Datei befindet sich im Ordner C:\logs. Wenn dieser Ordner nicht vorhanden ist, muss er erstellt werden. Andernfalls werden keine Ablaufverfolgungen generiert. Führen Sie dann SetupETW.bat auf dem Client- und dem Servercomputer aus, um die ETW-Ablaufverfolgungssitzung zu starten. Die Datei SetupETW.bat befindet sich unter dem Ordner CS\Client.

  4. Wenn Sie das Beispiel in einer Konfiguration mit einem oder mehreren Computern ausführen möchten, befolgen Sie die Anweisungen unter Ausführen der Windows Communication Foundation-Beispiele.

  5. Führen Sie nach dem Abschließen des Beispiels CleanupETW.bat aus, um das Erstellen der Datei ETWTracingSampleLog.etl abzuschließen.

  6. Öffnen Sie die Datei "ETWTracingSampleLog.etl" in Service Trace Viewer. Sie werden aufgefordert, die binär formatierte Datei als SVCLOG-Datei zu speichern.

  7. Öffnen Sie die neu erstellte SVCLOG-Datei im Viewer für Dienstabläufe, um die ETW- und ServiceModel-Ablaufverfolgungen anzuzeigen.

Siehe auch