wcf 跟踪设置

示例

WCF跟踪建立在System.Diagnostics之上。要使用跟踪,您应该在配置文件或代码中定义跟踪源。

默认情况下未启用跟踪。要激活跟踪,必须创建跟踪侦听器并为配置中的选定跟踪源设置除“关”以外的跟踪级别;否则,WCF不会生成任何跟踪。

以下示例显示如何启用消息日志记录并指定其他选项:

<configuration>
 <system.diagnostics>
  <sources>
    <source name="System.ServiceModel"
            switchValue="All"
            propagateActivity="true" >
      <listeners>
        <add name="wcf_trace"/>
      </listeners>
    </source>
    <source name="System.ServiceModel.MessageLogging">
      <listeners>
        <add name="wcf_trace"/>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add name="wcf_trace"
         type="System.Diagnostics.XmlWriterTraceListener" 
         initializeData="c:\temp\wcf_trace\DistanceService.svclog" />
  </sharedListeners>
 </system.diagnostics>

 <system.serviceModel>
  <diagnostics wmiProviderEnabled="true">
      <messageLogging 
           logEntireMessage="true" 
           logMalformedMessages="true"
           logMessagesAtServiceLevel="true" 
           logMessagesAtTransportLevel="true"
           maxMessagesToLog="3000" />
  </diagnostics>
 </system.serviceModel>
</configuration>

initializeData指定该侦听器的输出文件的名称。如果未指定文件名,则会根据使用的侦听器类型生成一个随机文件名。

记录级别和选项

  • 服务级别

在此层记录的消息即将输入(接收)或离开(发送)用户代码。如果定义了过滤器,则仅记录与过滤器匹配的消息。否则,将记录服务级别的所有消息。除了“可靠消息传递”消息外,还会在此级别记录基础结构消息(事务,对等通道和安全性)。在流式消息上,仅记录头。此外,安全消息在此级别被记录为解密。

  • 运输等级

在此层记录的消息已准备好进行编码或解码,以便在网上传输时或在网上传输后进行。如果定义了过滤器,则仅记录与过滤器匹配的消息。否则,将记录传输层的所有消息。所有基础结构消息都记录在此层,包括可靠的消息传递消息。在流式消息上,仅记录头。此外,安全消息在此级别记录为已加密,除非使用安全传输(例如HTTPS)。

  • 格式错误

格式错误的消息是WCF堆栈在处理的任何阶段都会拒绝的消息。格式错误的消息按原样记录:如果是这样,则使用不正确的XML进行加密,等等。maxSizeOfMessageToLog定义了要记录为CDATA的消息的大小。默认情况下,maxSizeOfMessageToLog等于256K。有关此属性的更多信息,请参见“其他选项”部分。

如果要禁用跟踪源,则应改用messageLogging元素的logMessagesAtServiceLevel,logMalformedMessages和logMessagesAtTransportLevel属性。您应该将所有这些属性设置为false。