2013-05-30 22 views
0

我試圖保留對我的WCF Restfull服務的所有調用的日誌。 我需要能夠查看方法名稱,傳遞給它的所有參數,以及任何迴應(字符​​串對象,列表)WCF使用參數和方法名稱登錄

這裏是我的設置配置文件中:

<system.serviceModel> 
    <diagnostics> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="true" 
     logMessagesAtServiceLevel="false" 
     logMessagesAtTransportLevel="true" 
     maxMessagesToLog="2147483647" 
     maxSizeOfMessageToLog="2147483647"/> 
</diagnostics> 

</system.serviceModel> 
<system.diagnostics> 
<sources> 
    <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity="true"> 
    <listeners> 
     <add name="ServiceModelTraceListener"> 
     <filter type=""/> 
     </add> 
    </listeners> 
    </source> 
    <source name="System.ServiceModel.MessageLogging"> 
    <listeners> 
     <add name="ServiceModelMessageLoggingListener"> 
     <filter type=""/> 
     </add> 
    </listeners> 
    </source> 
</sources> 
<sharedListeners> 
    <add initializeData="c:\Temp\Tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp"> 
    <filter type=""/> 
    </add> 
    <add initializeData="c:\Temp\Messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp"> 
    <filter type=""/> 
    </add> 
</sharedListeners> 
<trace autoflush="true"/> 

在Messages.svclog文件中,「活動」選項卡不顯示對我的方法的調用。它只顯示Received消息體中傳遞的參數。響應消息不顯示方法名稱,但我可以在Action屬性下看到它。

在Tracelog.svclog文件,活動選項卡不顯示來電我的方法,但它並沒有顯示

我如何可以設置它,看看被稱爲我的方法所傳遞的任何參數或響應對象參數和它的響應?

回答

1

你將需要擴展WCF來注入你的日誌。您可以提供自己的IOperationInvoker,它可以記錄來電的輸入和輸出,也可以使用IParameterInspector。您還可以查看IDesign的The Enterprise Services日誌(您必須在頁面上搜索它)或者這裏是direct link

+0

我希望更簡單的方法來實現它。 –

+1

如果你看看提供的鏈接,他們給你完整的例子來說明如何實現攔截。他們可能看起來很難,但添加相當簡單。 –

相關問題