不跟踪WCF服务(诊断跟踪)

时间:2010-08-26 17:37:46

标签: .net wcf logging trace system.diagnostics

我有一个调用WCF服务的客户端(单元测试)(在控制台应用程序中以调试模式托管)。

我的服务有误,但我不知道哪个。我需要跟踪它,但不能在客户端生成任何文件svclog。

任何建议,任何示例代码都有效吗?

编辑:我使用登录EntLibrary 4.1。我认为配置错误和WCF诊断跟踪不跟踪日志。

我在客户端的配置是:

  <system.diagnostics configSource="Config\diagnostics.config" />

  <system.serviceModel>
    <behaviors configSource="Config\system.servicemodel.behaviors.config" />
    <bindings configSource="Config\system.servicemodel.bindings.config" />
    <client configSource="Config\system.servicemodel.client.config" />

    <diagnostics wmiProviderEnabled="false">
      <messageLogging logEntireMessage="true"
                logMalformedMessages="true"
                logMessagesAtServiceLevel="true"
                logMessagesAtTransportLevel="true"
               />

    </diagnostics>

  </system.serviceModel>


<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true" >
      <listeners>
        <add name="xml"/>
      </listeners>
    </source>

    <source name="myUserTraceSource" switchValue="Warning, ActivityTracing">
      <listeners>
        <add name="xml"/>
      </listeners>
    </source>
  </sources>

  <sharedListeners>
    <add name="xml"
         type="System.Diagnostics.XmlWriterTraceListener"
         initializeData="TraceLog.svclog" />
  </sharedListeners>

</system.diagnostics>

  <loggingConfiguration configSource="Config\loggingConfiguration.config"/>

  <exceptionHandling configSource="Config\exceptionHandling.config" />

1 个答案:

答案 0 :(得分:2)

您可能希望将switchValue设置为All - 这将记录所有内容。 (参见表格2/3下页here。)

如果您的服务器上出现错误,请将<diagnostics>元素添加到服务器的web.config文件中,而不是客户端的web.config文件中。如果错误在您的服务器上,那么您需要在那里跟踪它。我想如果你的服务出错了,那么在客户端上进行跟踪不会给你提供与服务器端跟踪相同的信息。

如果您可以提供有关您所看到的错误的更多信息,那也会有所帮助。我会相应地更新我的答案。

希望这有帮助!