追蹤和訊息記錄
TracingAndLogging 範例示範如何啟用追蹤和訊息記錄。 系統會使用服務追蹤檢視器工具 (SvcTraceViewer.exe) 來檢視產生的追蹤和訊息記錄。 這個範例是根據使用者入門。
注意
此範例的安裝程序與建置指示位於本主題的結尾。
追蹤
Windows Communication Foundation (WCF) 會使用 System.Diagnostics 命名空間中定義的追蹤機制。 在這個追蹤模型中,應用程式實作的追蹤來源會產生追蹤資料。 每個來源都是以名稱來識別。 追蹤消費者會為他們要擷取資訊的追蹤來源建立追蹤接聽項。 若要接收追蹤資料,就必須建立追蹤來源的接聽項。 在 WCF 中,藉由設定服務模型追蹤來源 switchValue
,將下列程式碼新增至服務或用戶端的組態檔,可以完成這項工作:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
如需追蹤來源的詳細資訊,請參閱設定追蹤主題中的「追蹤來源」一節。
活動追蹤和傳播
如果在用戶端及服務的 system.ServiceModel
追蹤來源中啟用 ActivityTracing
,並將 propagateActivity
設定為 true
,則可以在處理 (活動) 的邏輯單位內、在端點中的活動之間 (透過活動傳輸),以及跨多個端點的活動之間 (透過活動識別碼傳播),提供追蹤的相互關聯。
這三種機制 (活動、傳輸和傳播) 可以協助您使用 [服務追蹤檢閱器] 工具,迅速找到錯誤的根本原因。 如需詳細資訊,請參閱使用服務追蹤檢視器檢視相關追蹤並進行疑難排解。
您可以建立使用者定義的活動追蹤,來延伸 ServiceModel 所提供的追蹤。 使用者定義的活動追蹤允許使用者建立追蹤活動,以進行下列工作:
將追蹤集合成工作邏輯單位的群組。
透過傳輸和傳播將活動相互關聯。
降低 WCF 追蹤的效能成本 (例如,記錄檔的磁碟空間成本)。
如需使用者定義活動追蹤的詳細資訊,請參閱擴充追蹤範例。
訊息記錄
任何 WCF 應用程式的用戶端和服務上都可以啟用訊息記錄。 若要啟用訊息記錄,您必須將下列程式碼新增至用戶端或服務:
<configuration>
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
記錄訊息時,追蹤類型將依據是在用戶端或在伺服器上追蹤而定。 例如,在用戶端,傳送給用戶端的「新增」訊息會受到 "TransportWrite" 類型的追蹤,然而在服務上,相同的訊息則會受到 "TransportRead" 類型的追蹤。
設定追蹤接聽項,方式是將下列程式碼新增至用戶端的 App.config 檔案或服務的 Web.config 檔案的 System.Diagnostics 區段:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
在組態檔內指定的目標目錄中,會使用 XML 格式來記錄訊息。
注意
如果一開始並未建立記錄目錄,就不會建立追蹤檔。 請確定目錄 C:\logs\ 存在,不然就在接聽項組態中指定其他記錄目錄。 如需詳細資訊,請參閱本文件結尾的初始安裝指示。
如需訊息記錄的詳細資訊,請參閱設定訊息記錄主題。
若要安裝、建置及執行範例
在執行追蹤和訊息記錄範例前,請先建立可供服務將 .svclog 檔寫入的 C:\logs\ 目錄。 這個目錄名稱會在組態檔中定義為所要記錄之追蹤和訊息的路徑,而您可以變更此名稱。 請提供使用者對記錄目錄的網路服務寫入權限。
若要建置方案的 C#、C++ 或 Visual Basic .NET 版本,請遵循 建置 Windows Communication Foundation 範例 (部分機器翻譯) 中的指示。
若要在單一或多部電腦組態中執行此範例,請遵循執行 Windows Communication Foundation 範例中的指示進行。