我在WCF服务上启用了邮件跟踪。它会跟踪几条消息,然后它会停止,当我尝试在TraceViwer中打开跟踪时,它会在最后一条记录的消息上给出错误,或者甚至不会每次都将文件打开到不同的错误。
我甚至无法删除损坏的文件,除非我正在使用文件,因为我正在使用该文件!
这是我的跟踪配置。
<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:\Logs\Web_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
答案 0 :(得分:12)
根据John的回答,您可以在每次写入后使用Trace.AutoFlush刷新文件。类似于this example ...
的内容<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
答案 1 :(得分:1)
该服务是否仍在运行?那么问题可能只是文件还没有被刷新。