2012-04-19 7 views
6

Die Anwendung, die ich erstelle, stellt mehrere WCF-Dienste (A, B) zur Verfügung. Intern verbraucht es mehrere andere WCF-Dienste, die in unserem internen Netzwerk (X, Y) ausgeführt werden.Ignorieren bestimmter WCF-Dienste von WCF-Ablaufverfolgungsprotokollen

Mit WCF-Nachrichtenprotokollierung möchte ich nur protokollieren Verkehr zwischen unseren Diensten A, B und den externen Clients, die sie anrufen.

Keine Daten zwischen meinen Diensten (A, B) und den Back-End-Diensten (X, Y) sollten von WCF protokolliert werden.

Filterung über system.serviceModel/Diagnose/messageLogging/Filter war teilweise erfolgreich:

<filters> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
     /s:Envelope/s:Header/*[contains(text(),"MyServiceA")] 
     </add> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none"> 
     /s:Envelope/s:Header/a:Action[contains(text(),"MyServiceA")] 
     </add> 
    </filters> 

Dies ist jedoch Antworten von unserem Service, wie SOAP Antworten erfassen nicht filtern auf keinen Text enthalten.

Die WCF MessageLogTraceRecord hat enthalten die SOAP-Aktion, aber ich kann nicht einen Filter zu konstruieren, scheint es Zugang:

<MessageLogTraceRecord> 
    <Addressing xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace> 
    <Action>http://opia.api.translink.com.au/ApiLocationService/2012/04/IApiLocationService/ResolveInputServiceFaultFault</Action> 
    </Addressing> 
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
     <s:Body> 
     ... 

WCF Nachrichtenprotokollierung und beenden Verfolgung zu beenden sind mit allen Optionen aktiviert eingestellt wahr. ActivityTracing und Warning Level Logging sind aktiviert.

+1

Sie würden filtern möchten, weil Sie besorgt über die Dateigröße oder Rauschen sind? MS Service Trace Viewer UI ist ziemlich gut zu filtern. –

+1

Hauptsächlich Lärm. Die "inneren" Dienste sind äußerst gesprächig, ein Anruf bei unserem Service umfasst 30+ Anrufe an ihre. Die interne Serviceschnittstelle ist jedoch gut getestet und es können keine Änderungen daran vorgenommen werden. – geoffreys

Antwort

2

dieses

<filters> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
     /s:Envelope/s:Header/*[contains(text(),"MyServiceA")] 
     </add> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none"> 
     /s:Envelope/s:Header/a:Action[contains(text(),"http://opia.api.translink.com.au/ApiLocationService/2012/04/IApiLocationService/ResolveInputServiceFaultFault")] 
     </add> 
    </filters> 

mit der URL der Text "MyServiceA" in Aktion Filter ersetzt Versuchen in MessageLogTraceRecord> Aktion

Verwandte Themen