Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Im Beispiel "TracingAndLogging " wird veranschaulicht, wie Ablaufverfolgung und Nachrichtenprotokollierung aktiviert werden. Die resultierenden Ablaufverfolgungen und Nachrichtenprotokolle werden mithilfe des Dienstablaufverfolgungs-Viewer-Tools (SvcTraceViewer.exe) angezeigt. Dieses Beispiel basiert auf den Ersten Schritten.
Hinweis
Die Einrichtungsverfahren und Build-Anweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Nachverfolgung
Windows Communication Foundation (WCF) verwendet den im System.Diagnostics-Namespace definierten Ablaufverfolgungsmechanismus. In diesem Ablaufverfolgungsmodell werden Ablaufverfolgungsdaten von Ablaufverfolgungsquellen erzeugt, die von Anwendungen implementiert werden. Jede Quelle wird durch einen Namen identifiziert. Ablaufverfolgungsconsumer erstellen Ablaufverfolgungslistener für die Ablaufverfolgungsquellen, für die sie Informationen abrufen möchten. Sie müssen einen Listener für die Ablaufverfolgungsquelle erstellen, um Ablaufverfolgungsdaten zum empfangen. In WCF kann dies erfolgen, indem Sie den folgenden Code entweder der Konfigurationsdatei des Diensts oder des Clients hinzufügen, indem Sie die Dienstmodellablaufverfolgungsquelle switchValuefestlegen:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Weitere Informationen zu Ablaufverfolgungsquellen finden Sie im Abschnitt " Ablaufverfolgungsquelle" im Thema "Konfigurieren der Ablaufverfolgung ".
Aktivitätsablaufverfolgung und Weitergabe
Wenn ActivityTracing aktiviert und propagateActivity auf true eingestellt sind in den system.ServiceModel Ablaufverfolgungsquellen sowohl für den Client als auch für den Dienst, ermöglichen sie die Korrelation von Ablaufverfolgungen innerhalb logischer Verarbeitungseinheiten (Aktivitäten), über Aktivitäten innerhalb von Endpunkten (durch Aktivitätsübertragungen) und über Aktivitäten hinweg, die mehrere Endpunkte (durch Aktivitäts-ID-Verteilung) umfassen.
Diese drei Mechanismen (Aktivitäten, Übertragungen und Verteilung) können Ihnen helfen, die Ursache eines Fehlers schneller mithilfe des Dienstablaufverfolgungs-Viewer-Tools zu finden. Weitere Informationen finden Sie unter Verwenden der Dienstablaufverfolgungsanzeige zum Anzeigen korrelierter Ablaufverfolgungen und Problembehandlung.
Es ist möglich, die Ablaufverfolgung zu erweitern, die vom ServiceModel bereitgestellt wird, indem benutzerdefinierte Aktivitätsablaufverfolgungen erstellt werden. Durch die benutzerdefinierte Aktivitätsablaufverfolgung kann der Benutzer Ablaufverfolgungsaktivitäten für folgenden Aktionen erstellen:
Gruppieren von Ablaufverfolgungen in logische Arbeitseinheiten.
Korrelieren Sie Aktivitäten durch Übertragungen und Verbreitung.
Verringert die Leistungskosten der WCF-Ablaufverfolgung (z. B. die Speicherplatzkosten einer Protokolldatei).
Weitere Informationen zur benutzerdefinierten Aktivitätsprotokollierung finden Sie im Beispiel zur Erweiterung der Protokollierung.
Nachrichtenprotokollierung
Die Nachrichtenprotokollierung kann sowohl auf dem Client als auch im Dienst einer beliebigen WCF-Anwendung aktiviert werden. Um die Nachrichtenprotokollierung zu aktivieren, müssen Sie dem Client oder Dienst den folgenden Code hinzufügen:
<configuration>
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
Wenn eine Nachricht aufgezeichnet wird, ist der Ablaufverfolgungstyp abhängig davon, ob die Ablaufverfolgung beim Client oder beim Server erfolgt. Beispielsweise wird eine "Add"-Nachricht, die an einen Client gesendet wird, unter der Kategorie "TransportWrite" auf dem Client nachverfolgt, während dieselbe Nachricht unter der Kategorie "TransportRead" im Dienst nachverfolgt wird.
Konfigurieren Sie den Ablaufverfolgungslistener, indem Sie den folgenden Code im System.Diagnostics-Abschnitt der Datei "App.config" für den Client oder der Datei "Web.config" für den Dienst hinzufügen:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Nachrichten werden im XML-Format im Zielverzeichnis protokolliert, das in der Konfigurationsdatei angegeben ist.
Hinweis
Ablaufverfolgungsdateien werden nur erstellt, wenn zuerst das Protokollverzeichnis erstellt wurde. Stellen Sie sicher, dass das Verzeichnis "C:\logs\" vorhanden ist, oder geben Sie ein alternatives Protokollierungsverzeichnis in der Listenerkonfiguration an. Weitere Informationen finden Sie in den ersten Setupanweisungen am Ende dieses Dokuments.
Weitere Informationen zur Nachrichtenprotokollierung finden Sie im Thema "Konfigurieren der Nachrichtenprotokollierung" .
So können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.
Bevor Sie das Beispiel zur Ablaufverfolgung und Nachrichtenprotokollierung ausführen, erstellen Sie das Verzeichnis C:\logs\, in das der Dienst die SVCLOG-Dateien schreiben kann. Der Name dieses Verzeichnisses wird in der Konfigurationsdatei als Pfad für die zu protokollierenden Ablaufverfolgungen und Nachrichten definiert und kann geändert werden. Gewähren Sie dem Benutzer Netzwerkdienst Schreibzugriff auf das Protokollverzeichnis.
Um die C#-, C++- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen im Erstellen der Windows Communication Foundation-Beispiele.
Führen Sie das Beispiel in einer Einzel- oder computerübergreifenden Konfiguration aus, indem Sie die Anweisungen unter Ausführen der Windows Communication Foundation-Beispiele befolgen.