【问题标题】:WCF Trace Logging Not Producing Log FilesWCF 跟踪日志记录不生成日志文件
【发布时间】:2014-06-16 22:35:10
【问题描述】:

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 跟踪日志记录相关的事件查看器中看到以下内容:

有什么建议吗?

【问题讨论】:

  • 它没有给你什么错误,或者你怎么知道它没有追踪?
  • @Greg 未在配置文件中指定的路径中创建 svclog 文件。我启动了该服务并对其进行了多次调用,但它没有生成任何 svclog。
  • 您还有信息吗,我可以尝试帮助您吗?
  • 我希望我这样做了,但我想不出任何相关的内容要添加。不知道还有什么要解决的。如果您还有其他问题,请随时提出。
  • 是的,Event 存在但日志本身不存在,这很奇怪。

标签: c# wcf


【解决方案1】:

只有在配置中指定的目录之前存在的情况下才会创建日志文件;它不仅仅是创建日志文件的权限。请参阅MSDN article 的此注释部分:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    在 Microsoft 的开发人员网络上,他们实际上添加了一条关于在 Windows 8 中以管理员身份运行的重要说明,因为它经常被忽略。

    【讨论】:

    • 它实际上并未托管在 IIS 中。这是一个 net.tcp wcf windows 服务。我实际上使用的是 Windows 8,但我的 Visual Studio 实例以管理员模式运行。
    • 我还尝试将它作为控制台应用程序运行,Visual Studio 以管理员身份运行,结果相同。在事件查看器中没有具有上述相同消息的 .svclogs。
    • @ColeW 我会试着考虑一下,我想在变得更复杂之前先从简单开始。
    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2012-06-02
    • 2023-04-10
    • 1970-01-01
    • 2013-11-13
    • 2011-09-16
    相关资源
    最近更新 更多