5

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

2 回答 2

12

根据约翰的回答,您可以在每次写入后使用Trace.AutoFlush刷新文件。类似于此示例的内容...

<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>
于 2009-07-06T21:53:54.333 回答
1

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

于 2009-07-06T21:45:21.853 回答