擴充追蹤
ExtendingTracing 範例會示範如何在用戶端與服務程式碼中撰寫使用者定義的活動追蹤,以擴充 Windows Communication Foundation (WCF) 追蹤功能。 撰寫使用者定義的活動追蹤可以讓使用者建立追蹤活動,並將追蹤分組成工作的邏輯單位 (Logical Unit)。 也可以透過傳輸 (在相同的端點內) 以及傳播 (跨端點) 方式來關聯活動。 在此範例中,用戶端與服務都會啟用追蹤。 如需如何透過用戶端與服務組態檔啟用追蹤的詳細資訊,請參閱追蹤和訊息記錄。
這個範例以使用者入門為基礎。
注意
此範例的安裝程序與建置指示位於本主題的結尾。
追蹤與活動傳播
使用者定義的活動追蹤可以讓使用者建立自己的追蹤活動,並將追蹤分組成工作邏輯單位、透過傳輸與傳播來關聯活動,以及降低 WCF 追蹤的效能成本 (例如,記錄檔的磁碟空間成本)。
新增自訂來源
使用者定義的追蹤可以同時新增至用戶端與服務程式碼。 將追蹤來源新增至用戶端或服務組態檔,便可使這些自訂追蹤記錄並顯示在服務追蹤檢視器工具 (SvcTraceViewer.exe) 中。 下列程式碼示範如何將名為 ServerCalculatorTraceSource
之使用者定義的追蹤來源新增至組態檔。
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="xml">
<filter type="" />
</add>
</listeners>
</source>
<source name="ServerCalculatorTraceSource" switchValue="Information,ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="xml">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\ServerTraces.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" traceOutputOptions="Callstack">
<filter type="" />
</add>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
....
讓活動相互關聯
若要直接關聯跨端點的活動,在 propagateActivity
追蹤來源中的 true
屬性必須設定為 System.ServiceModel
。 此外,若要不經過 WCF 活動來傳播追蹤,這時必須關閉 ServiceModel 活動追蹤。 這項設定將如下列程式碼範例所示。
注意
關閉 ServiceModel 活動追蹤的方式不同於指定追蹤層級 (以設定為 Off 的 switchValue
屬性表示)。
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
...
</source>
</sources>
</system.diagnostics>
降低效能成本
將 ActivityTracing
追蹤來源中的 System.ServiceModel
設定為 Off 時會產生追蹤檔,其中只包含使用者定義的活動追蹤,而不包含任何 ServiceModel 活動追蹤。 排除 ServiceModel 活動追蹤會讓記錄檔變小很多。 但是,這樣就沒辦法關聯 WCF 處理追蹤。
設定、建置及執行範例
若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循 Building the Windows Communication Foundation Samples中的指示。
若要在單一或多部電腦組態中執行此範例,請遵循執行 Windows Communication Foundation 範例中的指示進行。