WCF跟踪和消息记录不会在服务主机(服务器)端写入日志文件

时间:2012-04-15 21:07:09

标签: c# wcf logging web-config trace

我的WCF服务出现了一些错误。

我需要确定发生了什么,所以我试图启用服务跟踪日志记录。

我按照规定的指导原则使用wcf configuration editor在我的客户端和服务器中设置跟踪和消息记录。

跟踪在客户端工作正常,但在这种情况下消息的用途有限,因为它们只是表明服务器上存在真正的故障,我应该检查服务器日志:

  

接收HTTP响应时发生错误       http://localhost:24162/MembershipService.svc。这可能是由于服务端点       绑定不使用HTTP协议。这也可能是由HTTP请求上下文引起的       被服务器中止(可能是由于服务关闭)。       有关详细信息,请参阅服务器日志。

我正在调试模式下运行,因此本例中的服务器是在端口24162上运行的asp.net开发服务器。

服务主机的web.config的诊断部分:

 <system.diagnostics>
<sources>
  <source propagateActivity="true" name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
    <listeners>
      <add type="System.Diagnostics.DefaultTraceListener" name="Default">
        <filter type="" />
      </add>
      <add name="ServiceModelTraceListener">
        <filter type="" />
      </add>
    </listeners>
  </source>
  <source name="System.ServiceModel.MessageLogging" switchValue="Verbose,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:\Logs\web_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
    <filter type="" />
  </add>
  <add initializeData="C:\Logs\web_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
    <filter type="" />
  </add>
</sharedListeners>
<trace autoflush="true" />

和system.servicemodel部分

<system.serviceModel>
        <diagnostics>
      <messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true"
        logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
      <endToEndTracing propagateActivity="true" activityTracing="true"
        messageFlowTracing="true" />
    </diagnostics>
</system.serviceModel>

目录“C:\ Logs”确实存在,我给了'Everyone'完全控制权。我还验证了TRACE常量的定义只是为了确定。

正如您所看到的,我正在尝试捕获跟踪/消息日志记录必须提供的任何内容和所有内容。什么都没有。但是,唉,我什么都没得到,nada,zilch。

在查看本网站上现存的问题并进行大量谷歌搜索后,根据一些建议(确保该文件夹存在,验证用户对该文件夹具有适当的权限),我觉得不能理解为什么我的跟踪没有写文件。有关如何解决跟踪日志记录的任何建议?是否有任何信息记录在其他地方,表明为什么跟踪不起作用?

供参考和未来读者使用 -

我去了here了解服务跟踪日志配置说明。 我去herehere尝试对未写入的日志文件进行故障排除。

1 个答案:

答案 0 :(得分:4)

我在跟踪日志记录工作后大约一个月前写了this up。看看它是否对你有所帮助。在你看来不正确的配置中没有任何东西跳出来。但是,也许从我的配置再次开始将有助于阐明情况。