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跟踪日志记录相关的事件查看器中看到以下内容:
有什么建议吗?
答案 0 :(得分:10)
只有先前配置中指定的目录存在,才会创建日志文件。它不仅仅是创建日志文件的权限。请参阅MSDN article中的此笔记部分:
如果没有最初创建日志目录,则不会创建跟踪文件。确保目录C:\ logs \ exists,或在侦听器配置中指定备用日志记录目录。
答案 1 :(得分:2)
根据你的评论“它不生成任何svclogs”让我相信这个问题与你的权限有关。如果您正在使用 Windows 8,则需要以管理员身份打开Visual Studio。如果不这样做,则不会生成任何跟踪日志文件。
您可能会检查的其他一些项目:
我假设它通过Internet信息系统(IIS)托管或通过Visual Studio进行调试。其中一个应该有希望解决这个问题。
在微软的开发者网络上,他们实际上添加了一个关于在Windows 8中以管理员身份运行的重要说明,因为它被忽视的频率。