跟踪设置
WCF 跟踪建立在 System.Diagnostics 之上。要使用跟踪,你应该在配置文件或代码中定义跟踪源。
默认情况下不启用跟踪。要激活跟踪,必须创建跟踪侦听器,并在配置中为所选跟踪源设置 Off
以外的跟踪级别; 否则,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。