WCF使用参数和方法名称进行日志记录

时间:2013-05-30 17:11:51

标签: wcf logging trace

我试图记录我的WCF Restfull服务的所有调用。 我需要能够查看方法名称,传递给它的所有参数以及任何响应(字符串,对象,列表)

这是我在配置文件中的设置:

<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文件中,“活动”选项卡不显示对我的方法的调用。它仅显示已接收消息正文中的传递参数。响应消息也不显示方法名称,但我可以在Action属性下看到它。

在Tracelog.svclog文件中,“活动”选项卡确实显示对我的方法的调用,但它没有显示传递的任何参数或响应对象

如何设置它以查看我的方法是否使用参数及其响应进行调用?

1 个答案:

答案 0 :(得分:1)

您需要扩展WCF以将注册记录到其中。您可以提供自己的IOperationInvoker,可以记录来自呼叫的输入和输出,也可以使用IParameterInspector。您还可以查看来自IDesign的The Enterprise Services日志(您必须在页面上搜索)或这里是direct link