2012-04-19 70 views
6

我正在構建的應用程序公開了幾個WCF服務(A,B)。在內部,它會消耗我們內部網絡上運行的其他幾個WCF服務(X,Y)。忽略WCF跟蹤日誌中的某些WCF服務

使用WCF消息日誌記錄,我希望只有我們的服務A,B和調用它們的外部客戶端之間的日誌流量。

WCF應記錄我的服務(A,B)和後端服務(X,Y)之間的數據。

過濾通過system.serviceModel /診斷/ messageLogging /過濾器部分成功有:

<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> 

然而,這無法從我們的業務獲得更多的響應,SOAP 響應不包含文本的篩選依據。

的WCF MessageLogTraceRecord 包含SOAP動作,但我似乎無法構建一個過濾器來訪問它:

<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消息記錄和端到端的跟蹤設置爲所有的選項都啓用真正。 ActivityTracing和警告級別日誌記錄已啓用。

+1

你想過濾,因爲你所關心的文件大小或噪音? MS服務跟蹤查看器用戶界面非常適用於過濾。 – 2012-04-19 06:20:42

+1

主要是噪音。 「內部」服務非常健談,一次打電話給我們的服務包含30多個電話給他們。然而,內部服務接口已經過很好的測試,不能對其進行更改。 – geoffreys 2012-04-19 22:03:24

回答

2

試試這個

<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> 

替換與MessageLogTraceRecord的URL過濾作用文本「MyServiceA」>動作