擴充追蹤
這個範例示範如何在用戶端與服務程式碼中撰寫使用者定義的活動追蹤,以擴充 Windows Communication Foundation (WCF) 追蹤功能。這樣可以讓使用者建立追蹤活動,並將追蹤分組成工作的邏輯單位 (Logical Unit)。也可以透過傳輸 (在相同的端點內) 以及傳播 (跨端點) 方式來關聯活動。在此範例中,用戶端與服務都會啟用追蹤。如需如何透過用戶端與服務組態檔啟用追蹤的詳細資訊,請參閱追蹤和訊息記錄。
注意: |
---|
此範例的安裝程序與建置指示位於本主題的結尾。 |
此範例是以使用者入門範例為基礎。
追蹤與活動傳播
使用者定義的活動追蹤可以讓使用者建立自己的追蹤活動,並將追蹤分組成工作邏輯單位、透過傳輸與傳播來關聯活動,以及降低 WCF 追蹤的效能成本 (例如,記錄檔的磁碟空間成本)。
新增自訂來源
使用者定義的追蹤可以同時新增至用戶端與服務程式碼。將追蹤來源新增至用戶端或服務組態檔,便可使這些自訂追蹤記錄並顯示在Service Trace Viewer Tool中。下列程式碼示範如何將名為 ServiceCalculatorTraceSource
之使用者定義的追蹤來源新增至組態檔。
<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>....
....
關聯活動
若要直接關聯跨端點的活動,在 System.ServiceModel
追蹤來源中的 propagateActivity
屬性必須設定為 true
。此外,若要不經過 WCF 活動來傳播追蹤,這時必須關閉 ServiceModel 活動追蹤。這項設定將如下列程式碼範例所示。
注意: |
---|
關閉 ServiceModel 活動追蹤的方式不同於指定追蹤層級 (以設定為 Off 的 switchValue 屬性表示)。
|
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
...
</source>
</sources>
</system.diagnostics>
降低效能成本
將 System.ServiceModel
追蹤來源中的 ActivityTracing
設定為 Off 時會產生追蹤檔,其中只包含使用者定義的活動追蹤,而不包含任何 ServiceModel 活動追蹤。這樣會使記錄檔的大小變小許多。但是,這樣就沒辦法關聯 WCF 處理追蹤。
若要設定、建置及執行範例
若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。
若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.