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