跟蹤設定
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。