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>
如需追蹤來源的詳細資訊,請參閱 設定追蹤 主題中的追蹤來源一節。
活動追蹤和傳播
在用戶端和服務端的追蹤來源中啟用ActivityTracing並將propagateActivity設定為true,在處理的邏輯單位(活動)內、端點內的活動之間,以及跨越多個端點的活動之間(透過活動 ID 傳播)提供追蹤的關聯性。
這三種機制(活動、傳輸和傳播)可協助您使用服務追蹤查看器工具,更快速地找出錯誤的根本原因。 如需詳細資訊,請參閱 使用服務追蹤查看器來檢視相互關聯的追蹤和疑難解答。
可以透過建立使用者定義的活動追蹤來擴充由 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\ 存在,或在接聽程式組態中指定替代記錄目錄。 如需詳細資訊,請參閱本文件結尾的初始安裝指示。
如需訊息記錄的詳細資訊,請參閱 設定訊息記錄 主題。
要設定、建置和執行範例,請執行以下步驟:
請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。
在執行追蹤和訊息記錄範例之前,請先建立目錄 C:\logs\ 讓服務寫入 .svclog 檔案。 此目錄的名稱定義在組態檔中,做為要記錄之追蹤和訊息的路徑,而且可以變更。 為使用者提供記錄目錄的網路服務寫入許可權。
若要建置 C#、C++ 或 Visual Basic .NET 版本的解決方案,請遵循 建置 Windows Communication Foundation 範例中的指示。
若要在單一或跨計算機組態中執行範例,請遵循 執行 Windows Communication Foundation 範例中的指示。