WCF跟踪文件不断被破坏?

时间:2009-07-06 20:53:13

标签: c# .net wcf iis tracing

我在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>

2 个答案:

答案 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)

该服务是否仍在运行?那么问题可能只是文件还没有被刷新。