Freigeben über


Verwenden von Filtern zur Nachrichtenprotokollierung

In diesem Beispiel wird gezeigt, wie Filter zur Nachrichtenprotokollierung erstellt werden. Protokolliert werden nur die Nachrichten, die mit den Filterkriterien übereinstimmen, wodurch weniger Protokollausgaben anfallen und das Debuggen vereinfacht wird. Insbesondere veranschaulicht dieses Beispiel, wie nach dem SOAP Action-Element gefiltert wird.

Tipp

Dieses Beispiel enthält keinen Code. Sie können die in diesem Beispiel angegebene Konfiguration der Konfigurationsdatei einer Anwendung hinzufügen und die Änderungen bei der Nachrichtenprotokollierung im Kontext Ihres Szenarios betrachten.

Filtern bei der Nachrichtenprotokollierung

Windows Communication Foundation (WCF)-Nachrichtenprotokollierung kann mit einem XPath-Filter angepasst werden. Es werden nur die Nachrichten protokolliert, die den Filter durchlaufen. Der Filter wird in der Sprache XPath definiert und kann dem <messageLogging>-Element der Konfigurationsdatei hinzugefügt werden.

Der Filter listet die Bedingungen auf, die eine Nachricht erfüllen muss, um protokolliert zu werden. Dieses Beispiel zeigt, wie Nachrichten mit einer bestimmten SOAP-Aktion protokolliert werden.

Filtern nach der Aktion

Sofern der Dienst keine benutzerdefinierte Aktion für die Vorgänge konfiguriert, müssen Nachrichten nicht notwendigerweise Endpunkt- oder Vertragsverweise enthalten.

Wenn keine benutzerdefinierten Aktionen verwendet werden, hat die in jeder Nachricht enthaltene Aktion das folgende Format.

ContractNamespace/ContractName/OperationName

ContractNamespace beinhaltet http://.

Bei Verwendung eines SOAP 1.2-Umschlags für die Nachricht können Nachrichten, die auf den Vertrag MyContractName mit dem MyContractNamespace-Namespace abzielen, zur Protokollierung gefiltert werden, wie in der folgenden Konfiguration gezeigt.

<messageLogging logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="true" >
   <filters>
      <add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'MyContractNamespace/MyContractName')]</add>
   </filters>
</messageLogging>

Das folgende Beispiel zeigt, wie ein Filter hinzugefügt wird, der den Namespace- und Vertragsnamen für die Add-Anforderung aus dem Beispiel zum Ablaufverfolgung und Nachrichtenprotokollierung angibt.

<filters>
   <add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'http://Microsoft.ServiceModel.Samples/ICalculator/Add')]</add>
</filters>

Bei Verwendung benutzerdefinierter Aktionen kann Nachrichtenprotokollierung verwendet werden, um Nachrichten mit der folgenden Aktion zu filtern.

<add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action/text()="MyAction"</add>

Bei SOAP 1.1-Umschlägen sollte der SOAP-Namespace durch https://schemas.xmlsoap.org/soap/envelope/ ersetzt werden. In anderen Adressierungsversionen sollten Sie ähnliche Änderungen ausführen.

Beim HTTP-Basisprofil gehören Header nicht zum Umschlag und werden als HTTP-Header gesendet. Sie sollten die Filtertechnik entsprechend ändern.

Weitere Informationen zur Nachrichtenprotokollierung finden Sie im Thema Configuring Message Logging.

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Fügen Sie zum Ausführen dieses Beispiels einen der oben aufgeführten Konfigurationsabschnitte der Konfigurationsdatei Ihrer Anwendung hinzu. Da Einstellungen zur Nachrichtenprotokollierung in der gesamten Anwendungsdomäne gültig sind, wirkt sich der Protokollierungsfilter auf sämtliche in der Anwendungsdomäne protokollierten Nachrichten aus.

  2. Führen Sie die Anwendung aus. Beachten Sie, dass nur Nachrichten, die die Filterbedingung erfüllen, auf dem Datenträger protokolliert werden.

Siehe auch

Weitere Ressourcen

Configuring Message Logging

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.