我在 WCF 服务上启用了消息跟踪。它跟踪几条消息然后停止,当我尝试在 TraceViwer 中打开跟踪时,它在记录的最后一条消息上给我一个错误,或者每次都因为不同的错误而没有打开文件。
我什至无法删除损坏的文件,除非我运行 resetiis,因为该文件正在被使用!
这是我的跟踪配置。
<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>
最佳答案
根据约翰的回答,您可以使用 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>
关于c# - WCF 跟踪文件不断损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089165/