トレースの拡張

このサンプルでは、ユーザー定義のアクティビティ トレースをクライアントとサービス コードに記述することにより、Windows Communication Foundation (WCF) トレース機能を拡張する方法を示します。これにより、ユーザーはトレース アクティビティを作成し、トレースを作業の論理単位ごとにグループ化することができます。さらに、転送 (同じエンドポイント内) や伝達 (異なるエンドポイント間) を経由してアクティビティを相互に関連付けることもできます。このサンプルでは、トレースはクライアントとサービスの両方で有効です。クライアントとサービスの構成ファイル内でトレースを有効にする方法の詳細については、「トレースとメッセージ ログ」を参照してください。

このサンプルは、「入門サンプル」に基づいています。

Aa354511.note(ja-jp,VS.100).gif注 :
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。

Aa354511.Important(ja-jp,VS.100).gif 注 :
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。

<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 アクティビティ トレースをオフにする必要があります。次のコード サンプルを参照してください。

Aa354511.note(ja-jp,VS.100).gif注 :
ServiceModel アクティビティ トレースをオフにすることは、switchValue プロパティが表すトレース レベルをオフにすることとは異なります。

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">

    ...

       </source>
    </sources>
</system.diagnostics>

パフォーマンスの負荷の軽減

System.ServiceModel トレース ソースの ActivityTracing をオフに設定すると、ユーザー定義のアクティビティ トレースのみを含み、ServiceModel アクティビティ トレースは含まないトレース ファイルが生成されます。これによって、ログ ファイルのサイズがはるかに小さくなります。ただし、WCF 処理トレースを関連付けることはできなくなります。

サンプルを設定、ビルド、および実行するには

  1. Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。

  2. ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。

  3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「Running the Windows Communication Foundation Samples」の手順に従います。

参照

その他のリソース

AppFabric の監視のサンプル