WCF跟踪日志记录不生成日志文件

时间:2014-04-30 14:32:04

标签: c# wcf

WCF跟踪日志记录似乎无法在我的某个wcf Windows服务中运行。我在其他服务中使用了相同的配置,并且它在过去一直有用。我此刻难过。这是我的配置:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging"
              switchValue="Information, ActivityTracing">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="C:\ProgramData\Bastian Software\Logs\ExactaManifest\Messages.svclog"  />
        </listeners>
      </source>
      <source name="System.ServiceModel"
                switchValue="Information, ActivityTracing">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="C:\ProgramData\Bastian Software\Logs\ExactaManifest\WCF.svclog"  />
        </listeners>
      </source>
    </sources>

    <trace autoflush="true" />
  </system.diagnostics>
  <system.serviceModel>
    <diagnostics performanceCounters="All">
      <messageLogging
         logMessagesAtTransportLevel="true"
         logMessagesAtServiceLevel="false"
         logMalformedMessages="true"
         logEntireMessage="true"
         maxSizeOfMessageToLog="2147483647" maxMessagesToLog="25000" />
    </diagnostics>
  </system.serviceModel>

</configuration>

它似乎不是权限问题,因为我手动创建了与运行该服务的用户相同的文件夹和文件。此外,我在与此wcf跟踪日志记录相关的事件查看器中看到以下内容:

enter image description here

有什么建议吗?

2 个答案:

答案 0 :(得分:10)

只有先前配置中指定的目录存在,才会创建日志文件。它不仅仅是创建日志文件的权限。请参阅MSDN article中的此笔记部分:

  

如果没有最初创建日志目录,则不会创建跟踪文件。确保目录C:\ logs \ exists,或在侦听器配置中指定备用日志记录目录。

答案 1 :(得分:2)

根据你的评论“它不生成任何svclogs”让我相信这个问题与你的权限有关。如果您正在使用 Windows 8,则需要以管理员身份打开Visual Studio。如果不这样做,则不会生成任何跟踪日志文件。

您可能会检查的其他一些项目:

  • 应用程序池能够读/写您的项目目录(安全选项卡)。
  • 为服务分配了适当的应用程序池来操作项目目录。

我假设它通过Internet信息系统(IIS)托管或通过Visual Studio进行调试。其中一个应该有希望解决这个问题。

在微软的开发者网络上,他们实际上添加了一个关于在Windows 8中以管理员身份运行的重要说明,因为它被忽视的频率。