ExtendingTracing サンプルは、クライアントおよびサービス コードでユーザー定義アクティビティ トレースを記述することによって、Windows Communication Foundation (WCF) トレース機能を拡張する方法を示しています。 ユーザー定義のアクティビティ トレースを記述すると、ユーザーはトレース アクティビティを作成し、トレースを論理作業単位にグループ化できます。 また、転送 (同じエンドポイント内) と伝達 (エンドポイント間) を介してアクティビティを関連付けることもできます。 このサンプルでは、クライアントとサービスの両方に対してトレースが有効になっています。 クライアントおよびサービス構成ファイルでトレースを有効にする方法の詳細については、「 トレースとメッセージ ログ」を参照してください。
このサンプルは、入門に基づいています。
注
このサンプルのセットアップ手順とビルド手順は、このトピックの最後にあります。
トレースとアクティビティの伝達
ユーザー定義アクティビティ トレースを使用すると、ユーザーは独自のトレース アクティビティを作成してトレースを論理作業単位にグループ化し、転送と伝達によってアクティビティを関連付け、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 アクティビティ トレースをオフにすることは、 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 サンプル のOne-Time セットアップ手順を実行していることを確認します。
ソリューションの C# または Visual Basic .NET エディションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
シングル コンピューター構成またはクロスコンピューター構成でサンプルを実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。