次の方法で共有


トレースの拡張

Download sample

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

Noteメモ :

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。

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

トレースとアクティビティの伝達

ユーザー定義のアクティビティ トレースにより、ユーザー自身のトレース アクティビティを作成できます。これによって、複数のトレースを作業の論理単位ごとにグループ化したり、転送や伝達を経由してアクティビティを相互に関連付けたり、WCF トレースのパフォーマンスの負荷 (ログ ファイルによるディスク領域の負荷など) を軽減できます。

カスタム ソースの追加

ユーザー定義のトレースは、クライアントとサービス コードの両方に追加できます。トレース ソースをクライアントまたはサービスの構成ファイルに追加すると、カスタム トレースをService Trace Viewer Toolに記録および表示できます。次のコードは、ServiceCalculatorTraceSource というユーザー定義のトレース ソースを構成ファイルに追加する方法を示します。

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

Noteメモ :

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. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「Windows Communication Foundation サンプルの実行」の手順に従います。

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.