次の方法で共有


トレースの拡張

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 トレース ソースでtrueSystem.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 処理トレースを関連付ける機会は失われます。

サンプルを設定、ビルド、実行する

  1. Windows Communication Foundation サンプル One-Time セットアップ手順を実行していることを確認します。

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

  3. シングル コンピューター構成またはクロスコンピューター構成でサンプルを実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。

こちらも参照ください