トレースの拡張
ExtendingTracing サンプルでは、ユーザー定義のアクティビティ トレースをクライアントとサービス コードに記述して、Windows Communication Foundation (WCF) トレース機能を拡張する方法を示します。 ユーザー定義のアクティビティ トレースを記述すると、ユーザーはトレース アクティビティを作成し、トレースを作業の論理単位ごとにグループ化することができます。 さらに、転送 (同じエンドポイント内) や伝達 (異なるエンドポイント間) を経由してアクティビティを相互に関連付けることもできます。 このサンプルでは、トレースはクライアントとサービスの両方で有効です。 クライアントとサービスの構成ファイルでトレースを有効にする方法の詳細については、「トレースとメッセージ ログ」を参照してください。
このサンプルは、「入門サンプル」に基づいています。
Note
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。
トレースとアクティビティの伝達
ユーザー定義のアクティビティ トレースにより、ユーザー自身のトレース アクティビティを作成できます。これによって、複数のトレースを作業の論理単位ごとにグループ化したり、転送や伝達を経由してアクティビティを相互に関連付けたり、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 アクティビティ トレースをオフにする必要があります。 次のコード サンプルを参照してください。
Note
ServiceModel アクティビティ トレースをオフにすることは、switchValue
プロパティが表すトレース レベルをオフにすることとは異なります。
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
...
</source>
</sources>
</system.diagnostics>
パフォーマンス コストの軽減
ActivityTracing
トレース ソースの System.ServiceModel
をオフに設定すると、ユーザー定義のアクティビティ トレースのみを含み、ServiceModel アクティビティ トレースは含まないトレース ファイルが生成されます。 ServiceModel アクティビティ トレースを除外すると、ログ ファイルが大幅に小さくなります。 ただし、WCF 処理トレースを関連付ける機会は失われます。
サンプルをセットアップ、ビルド、実行する
Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。
単一または複数コンピューター構成でサンプルを実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。