共用方式為


追蹤和訊息記錄

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\ 存在,不然就在接聽項組態中指定其他記錄目錄。 如需詳細資訊,請參閱本文件結尾的初始安裝指示。

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

若要安裝、建置及執行範例

  1. 確定您已執行 Windows Communication Foundation 範例的一次性安裝程序

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

  3. 若要建置方案的 C#、C++ 或 Visual Basic .NET 版本,請遵循 建置 Windows Communication Foundation 範例 (部分機器翻譯) 中的指示。

  4. 若要在單一或多部電腦組態中執行此範例,請遵循執行 Windows Communication Foundation 範例中的指示進行。

另請參閱