跟蹤設定

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。