MSBuild でのビルド ログの取得

MSBuild でコマンド ライン オプションを使用することで、確認するビルド データの量とビルド データを 1 つ以上のファイルに保存するかどうかを指定できます。 カスタム ロガーを指定して、ビルド データを収集することもできます。 このトピックで説明されていない MSBuild コマンド ライン オプションの詳細については、「コマンド ライン リファレンス」を参照してください。

Note

Visual Studio IDE を使用してプロジェクトをビルドする場合は、ビルド ログを確認することで、それらのビルドをトラブルシューティングできます。 詳細については、ビルド ログ ファイルを表示、保存、および構成する」をご覧ください。

詳細レベルを設定する

詳細レベルを指定せずに MSBuild を使用して、プロジェクトをビルドすると、出力ログに次の情報が表示されます。

  • 重要度 - 高として分類されたエラー、警告、メッセージ。

  • 一部の状態イベント。

  • ビルドの概要。

-verbosity (-v) スイッチを使用して、出力ログに表示するデータ量を制御できます。 トラブルシューティングを行う場合は、detailed (d) または diagnostic (diag) のいずれかの詳細レベルを使用します。後者は情報が最も多くなります。

-verbositydetailed に設定すると、ビルド処理は遅くなることがあります。また、-verbositydiagnostic に設定するとさらに遅くなる可能性があります。

msbuild MyProject.proj -t:go -v:diag

詳細度の設定

次の表では、ログの詳細度 (列の値) が、ログに記録されるメッセージの種類 (行の値) に与える影響を示します。

メッセージの種類と詳細 Quiet 最小 標準 詳細 診断
エラー
警告
高重要度のメッセージ
通常の重要度のメッセージ
低重要度のメッセージ
MSBuild エンジンの追加情報

ビルド ログをファイルに保存する

-fileLogger (fl) スイッチを使用して、ビルド データをファイルに保存することができます。 次の例では、ビルド データを msbuild.log という名前のファイルに保存します。

msbuild MyProject.proj -t:go -fileLogger

次の例では、ログ ファイルに MyProjectOutput.log という名前を付けて、ログ出力の詳細度を diagnostic に設定しています。 -fileLoggerParameters (flp) スイッチを使用して、これら 2 つの設定を指定します。

msbuild MyProject.proj -t:go -fl -flp:logfile=MyProjectOutput.log;verbosity=diagnostic

詳細については、「コマンド ライン リファレンス」を参照してください。

ログ出力を複数のファイルに保存する

次の例では、ログ全体を msbuild1.log に、エラーのみを JustErrors.log に、警告のみを JustWarnings.log に保存します。 例では、3 つのファイルのそれぞれを表すファイル番号を使用します。 ファイル番号は、-fl スイッチと -flp スイッチの直後に指定されています (-fl1-flp1 など)。

ファイル 2 とファイル 3 の -fileLoggerParameters (flp) スイッチは、各ファイルの名前と各ファイルに含まれる内容を指定します。 ファイル 1 には名前が指定されていないため、既定の名前である msbuild1.log が使用されます。

msbuild MyProject.proj -t:go -fl1 -fl2 -fl3 -flp2:logfile=JustErrors.log;errorsonly -flp3:logfile=JustWarnings.log;warningsonly

セミコロンを解釈するシェル (bash など) を使用している場合は、セミコロンを含むオプションを単一引用符または二重引用符で囲んで、コマンド区切り記号として解釈されないようにします。 詳細については、「コマンド ライン リファレンス」を参照してください。

バイナリ ログを保存する

-binaryLogger (bl) スイッチを利用すれば、ログを圧縮されたバイナリ形式で保存できます。 このログには、ビルド プロセスの詳しい説明が含まれ、特定のログ分析ツールで読み取ることができます。

次の例では、バイナリ ログ ファイルが binarylogfilename という名前で作成されます。

-bl:binarylogfilename.binlog

構造化ログ ビューアーを使うと、バイナリ ログを表示し、起こっていることを簡単に確認することができます。

詳細については、「コマンド ライン リファレンス」を参照してください。

カスタム ロガーを使用する

ILogger インターフェイスを実装するマネージド型を記述することにより、独自のロガーを作成できます。 たとえば、カスタム ロガーを使用して、ビルド エラーをメールで送信する、データベースにログを記録する、または XML ファイルにログを記録することができます。 詳細については、「ビルド ロガー」を参照してください。

MSBuild コマンドラインでは、-logger スイッチを使用してカスタム ロガーを指定します。 また、-noconsolelogger スイッチを使用して、既定のコンソール ロガーを無効にすることもできます。