ETW トレース

AnalyticTrace サンプルでは、Event Tracing for Windows (ETW) と、このサンプルに用意されている ETWTraceListener を使用して、エンドツーエンド (E2E) のトレースを実装する方法を示します。 このサンプルは、「入門サンプル」に基づいており、ETW トレースを含んでいます。

Note

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

このサンプルでは、トレースとメッセージ ログについて理解していることを前提としています。

System.Diagnostics トレース モデル内の各トレース ソースでは、データのトレース場所とトレース方法を決定するトレース リスナーを複数設定できます。 リスナの種類では、トレース データの記録形式が定義されます。 リスナを構成に追加する方法を、次のコード サンプルに示します。

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel"
             switchValue="Verbose,ActivityTracing"
             propagateActivity="true">
            <listeners>
                <add type=
                   "System.Diagnostics.DefaultTraceListener"
                   name="Default">
                   <filter type="" />
                </add>
                <add name="ETW">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add type=
            "Microsoft.ServiceModel.Samples.EtwTraceListener, ETWTraceListener"
            name="ETW" traceOutputOptions="Timestamp">
            <filter type="" />
       </add>
    </sharedListeners>
</system.diagnostics>

このリスナを使用する前に、ETW トレース セッションを開始する必要があります。 このセッションは、Logman.exe または Tracelog.exe を使用して開始できます。 このサンプルには、ETW トレース セッションをセットアップするための SetupETW.bat ファイルと、セッションを閉じてログ ファイルを完了するための CleanupETW.bat ファイルが含まれています。

Note

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 これらのツールの詳細については、https://go.microsoft.com/fwlink/?LinkId=56580 を参照してください。

ETWTraceListener を使用する場合、トレースはバイナリの .etl ファイルにログ記録されます。 ServiceModel トレースが有効な場合、生成されるすべてのトレースは同じファイルに表示されます。 .etl と .svclog のログ ファイルを表示するには、サービス トレース ビューアー ツール (SvcTraceViewer.exe) を使用します。 このビューアでは、メッセージを送信側から受信側や使用地点までトレースできる、システムのエンドツーエンドのビューが作成されます。

ETW トレース リスナは、循環ログをサポートします。 この機能を有効にするには、[スタート] メニューの [ファイル名を指定して実行] をクリックし、「cmd」と入力してコマンド コンソールを起動します。 次のコマンドでは、<logfilename> パラメータを使用するログ ファイル名に置き換えます。

logman create trace Wcf -o <logfilename> -p "{411a0819-c24b-428c-83e2-26b41091702e}" -f bincirc -max 1000

-f スイッチと -max スイッチは省略できます。 これらのスイッチでは、それぞれバイナリの循環形式と 1000 MB の最大ログ サイズが指定されます。 -p スイッチは、トレース プロバイダーを指定する際に使用します。 この例では、"{411a0819-c24b-428c-83e2-26b41091702e}" は "XML ETW サンプル プロバイダー" の GUID です。

セッションを開始するには、次のコマンドを入力します。

logman start Wcf

ログ記録を完了したら、次のコマンドを使用してセッションを停止できます。

logman stop Wcf

このプロセスでは、サービス トレース ビューアー ツール (SvcTraceViewer.exe) や Tracerpt など、任意のツールで処理できるバイナリ循環ログが生成されます。

また、循環ログ記録を実行する代替リスナーの詳細については、「循環トレース」でも確認できます。

サンプルをセットアップ、ビルド、および実行するには

  1. Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。

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

    Note

    RegisterProvider.bat、SetupETW.bat、および CleanupETW.bat コマンドを使用するには、ローカル管理者アカウントで実行する必要があります。 Windows Vista 以降を使用している場合は、コマンド プロンプトもシステム特権で実行する必要があります。 これを行うには、コマンド プロンプトのアイコンを右クリックしてから、 [管理者として実行] をクリックします。

  3. サンプルを実行する前に、クライアントとサーバーで RegisterProvider.bat を実行します。 この結果、トレースを生成する ETWTracingSampleLog.etl ファイルがセットアップされます。このトレースはサービス トレース ビューアで読み取ることができます。 このファイルは、C:\logs フォルダにあります。 このフォルダーが存在しない場合はフォルダーを作成する必要があります。作成しない場合、トレースは生成されません。 次に、クライアント コンピューターとサーバー コンピューターで SetupETW.bat を実行し、ETW トレース セッションを開始します。 SetupETW.bat ファイルは、CS\Client フォルダーの下にあります。

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

  5. サンプルの使用が終わったら、CleanupETW.bat を実行して ETWTracingSampleLog.etl ファイルの作成を完了します。

  6. サービス トレース ビューア内で ETWTracingSampleLog.etl ファイルを開きます。 このバイナリ形式のファイルを .svclog ファイルとして保存するかどうかを尋ねるメッセージが表示されます。

  7. 新しく作成された .svclog ファイルをサービス トレース ビューアー内で開き、ETW トレースと ServiceModel トレースを表示します。

関連項目