.NET Framework のログ記録の制御
Windows イベント トレーシング (ETW: Event Tracing for Windows) を使用して共通言語ランタイム (CLR: Common Language Runtime) イベントを記録できます。 トレースの作成および表示には次のツールを使用します。
コマンド ライン ツールの Logman および Tracerpt。これらは Windows オペレーティング システムに含まれています。
Windows Performance Toolkit の Xperf ツール。 Xperf の詳細については、Windows Performance blog (Windows パフォーマンス ブログ) を参照してください。
CLR イベントの情報をキャプチャするには、コンピューターに CLR プロバイダーがインストールされている必要があります。 プロバイダーがインストールされているかどうかを確認するには、コマンド プロンプトで「logman query providers」と入力します。 プロバイダーの一覧が表示されます。 その一覧に、次のような CLR プロバイダーのエントリが含まれている必要があります。
Provider GUID
-------------------------------------------------------------------------------
.NET Common Language Runtime {E13C0D23-CCBC-4E12-931B-D9CC2EEE27E4}
…………………………………………….
一覧に CLR プロバイダーが含まれていない場合は、Windows Vista 以降のオペレーティング システムで Windows Wevtutil コマンド ライン ツールを使用してインストールできます。 管理者としてコマンド プロンプト ウィンドウを開き、 .NET Framework Version 4 のフォルダー (%WINDIR%\Microsoft.NET\Framework[64]\v4.<.NET version>\) に移動します。 このフォルダーに、CLR-ETW.man ファイルが含まれています。 コマンド プロンプトで次のコマンドを入力して CLR プロバイダーをインストールします。
wevtutil im CLR-ETW.man
CLR ETW イベントのキャプチャ
ETW イベントをキャプチャするには、コマンド ライン ツールの Logman および Xperf を使用します。トレース イベントをデコードするには、Tracerpt および Xperf を使用します。
ログを有効にするには、次の 3 つの項目を指定する必要があります。
通信先のプロバイダー。
キーワード セットを表す 64 ビットの数値。 各キーワードは、プロバイダーが有効にできる一連のイベントを表します。 この数値は、有効にするキーワードの組み合わせを表します。
記録レベル (詳細度) を表す小さな数値。 レベル 1 が最も簡易であり、レベル 5 が最も詳細になります。 レベル 0 は既定値であり、プロバイダー固有であることを意味します。
Logman を使用して CLR ETW イベントをキャプチャするには
コマンド プロンプトに次のように入力します。
logman start clrevents -p {e13c0d23-ccbc-4e12-931b-d9cc2eee27e4} 0x1CCBD 0x5 -ets -ct perf
それぞれの文字について以下に説明します。
-p パラメーターはプロバイダーの GUID を識別します。
0x1CCBD は、発生するイベントのカテゴリを指定しています。
0x5 は、ログ レベルを設定しています (この場合は詳細 (5))。
-ets パラメーターは、コマンドをイベント トレース セッションに送信するように指定します。
-ct perf パラメーターは、QueryPerformanceCounter 関数を使用して各イベントのタイム スタンプを記録するように指定します。
イベントの記録を停止するには、次のように入力します。
logman stop clrevents -ets
これにより、clrevents.etl という名前のバイナリ トレース ファイルが作成されます。
Xperf を使用して CLR ETW イベントをキャプチャするには
コマンド プロンプトで次のように入力します。
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:5 -f clrevents.etl
GUID には CLR ETW プロバイダーの GUID を指定します。0x1CCBD:5 を指定すると、レベル 5 (詳細) 以下のすべての内容がトレースされます。
トレースを停止するには、次のように入力します。
Xperf -stop clr
これにより、clrevents.etl という名前のトレース ファイルが作成されます。
CLR ETW イベントの表示
CLR ETW イベントを表示するには、以下のコマンドを使用します。 イベントの詳細については、「CLR ETW イベント」を参照してください。
Tracerpt を使用して CLR ETW イベントを表示するには
コマンド プロンプトで次のように入力します。
tracerpt clrevents.etl
これにより、dumpfile.xml と summary.txt という 2 つのファイルが作成されます。 dumpfile.xml ファイルはすべてのイベントの一覧で、summary.txt はイベントの概要です。
Xperf を使用して CLR ETW イベントを表示するには
コマンド プロンプトで次のように入力します。
xperf clrevents.etl
Xperf ETL ファイル ビューアーが開きます。 このビューアーでは、CLR イベントは、[一般的なイベント] ビューに表示されます。 種類別に分類されたイベントのデータ グリッドを表示するには、このビューで時間帯を選択し、マウスを右クリックし、[概要] をクリックします。
.etl ファイルをコンマ区切り値ファイルに変換するには
コマンド プロンプトで次のように入力します。
xperf -i clrevents.etl -f clrevents.csv
このコマンドを使用すると、XPerf によって、表示可能なコンマ区切り値 (CSV) ファイルとしてイベントがダンプされます。 イベントが異なればフィールドも異なるので、この CSV ファイルには、データの前に複数のヘッダー行が含まれます。 すべての行の先頭のフィールドはイベントの種類を表します。このフィールドは、残りのフィールドを判別するために使用されるヘッダーを示します。