共用方式為


追蹤和訊息記錄

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\ 存在,或在接聽程式組態中指定替代記錄目錄。 如需詳細資訊,請參閱本文件結尾的初始安裝指示。

如需訊息記錄的詳細資訊,請參閱 設定訊息記錄 主題。

要設定、建置和執行範例,請執行以下步驟:

  1. 請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。

  2. 在執行追蹤和訊息記錄範例之前,請先建立目錄 C:\logs\ 讓服務寫入 .svclog 檔案。 此目錄的名稱定義在組態檔中,做為要記錄之追蹤和訊息的路徑,而且可以變更。 為使用者提供記錄目錄的網路服務寫入許可權。

  3. 若要建置 C#、C++ 或 Visual Basic .NET 版本的解決方案,請遵循 建置 Windows Communication Foundation 範例中的指示。

  4. 若要在單一或跨計算機組態中執行範例,請遵循 執行 Windows Communication Foundation 範例中的指示。

另請參閱