1

当客户端正在使用第三方 WebService 时,我正在尝试在客户端中记录请求广告响应消息。

尽管多次尝试日志文件 - MessageLog.svclog 从未使用 app.config 文件中的以下 WCF 配置创建。请帮忙。

<system.diagnostics>
<sources>
  <source
     name="System.ServiceModel.MessageLogging"
     switchValue="Information, ActivityTracing" >
    <listeners>
      <add name="yourTrace"
           type="System.Diagnostics.XmlWriterTraceListener"
           initializeData="C:\Log\MessageLog.svclog">
        <filter type="" />
      </add>
    </listeners>
  </source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
        logMessagesAtTransportLevel="true"
        logMessagesAtServiceLevel="false"
        logMalformedMessages="true"
        logEntireMessage="true"
        maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" />
</diagnostics>
</system.serviceModel>

谢谢 !

4

2 回答 2

4

尝试这个。注意 SharedListeners 节点

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel.MessageLogging" 
          switchValue="Warning, ActivityTracing">
      <listeners>
        <add type="System.Diagnostics.DefaultTraceListener" name="Default">
          <filter type="" />
        </add>
        <add name="ServiceModelMessageLoggingListener">
          <filter type="" />
        </add>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add initializeData="C:\Log\MessageLog.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" />
</system.diagnostics>
<system.serviceModel>
    <diagnostics>
        <messageLogging logEntireMessage="true" logMalformedMessages="true"
          logMessagesAtTransportLevel="true" />
    </diagnostics>
    ...
</system.serviceModel>
于 2013-01-17T19:31:54.943 回答
0

我遇到了 WS 客户端跟踪问题,其中 App.config 和文件夹权限完全正常。就我而言,解决方案是将其重命名为 .exe.config(构建为 WS 客户端 dll 的 .dll.config)。所以请确保:

  1. 配置文件文件夹中的名称与程序集名称匹配
  2. 当您运行/调试它时,配置文件用于的程序集确实被使用,而不是其他位置的程序集。
  3. 如果它内置在 .dll.config 中,它可能会被忽略,因为它应该是 .exe.config。

-m

于 2014-06-05T13:39:15.527 回答