如何在WCF中编写自定义跟踪并查看跟踪

时间:2015-02-27 01:11:29

标签: c# wcf trace

我有一个WCF服务,我使用Trace.Writeline()方法记录活动。它一直运作良好但由于某种原因它最近停止了工作。现在我只有来自" System.ServiceModel.MessageLogging"的痕迹。和" System.ServiceModel"。我不记得我已经改变了配置,但有人可能会有,但我不记得它是如何被配置的。这就是我现在所拥有的:

首先,我已经定义了以下内容来记录所有消息:

   <diagnostics>
            <messageLogging logEntireMessage="true"
            logMalformedMessages="true" logMessagesAtServiceLevel="true"
            logMessagesAtTransportLevel="true" maxMessagesToLog="10000"
            maxSizeOfMessageToLog="1000000" />
            <endToEndTracing propagateActivity="true" activityTracing="true" messageFlowTracing="true" />
</diagnostics>

然后,我定义了下面的跟踪源,并告诉TRACE类应写入跟踪的位置:

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel" switchValue="All">
            <listeners>
                <add name="traceListener"
                type="System.Diagnostics.XmlWriterTraceListener"
                initializeData="E:\Projects\Logs\serviceTraces.svclog" />                   
            </listeners>
        </source>
     <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="messagelistener"
               type="System.Diagnostics.XmlWriterTraceListener" initializeData="E:\Projects\Logs\MyServiceMsg.svclog">
        </add>
        </listeners>
      </source>
    </sources>
    <trace autoflush="true" indentsize="4">
         <listeners>
            <add name="textLogListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="E:\Projects\Logs\MyServiceCustomMsg.svclog" />
            <remove name="Default" />
        </listeners>
  </trace>  
  </system.diagnostics>

因为我从&#34; MyServiceMsg.svclog&#34;和&#34; MyServiceCustomMsg.svclog&#34;,我不认为这是一个许可问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

找出原因。 &#34;痕量&#34;在构建时没有打开。在打开Trace的重新构建之后,我的自定义跟踪开始显示!