次の方法で共有


転送 logger の作成

転送 logger では、マルチプロセッサ システムでプロジェクトをビルドするとき、監視の対象とするイベントを選択できるため、ログの効率を高めることができます。転送 logger を有効にすることにより、不要なイベントによる中心 logger の過負荷、ビルドの低速化、およびログの煩雑化を回避できます。

転送 logger を作成するには、IForwardingLogger インターフェイスを実装してそのメソッドを手動で実装するか、ConfigurableForwardingLogger クラスとその定義済みメソッドを使用します。ほとんどのアプリケーションでは、後者で十分です。

イベントの登録とイベントへの応答

転送 logger は、セカンダリ ビルド エンジン (マルチプロセッサ システムでのビルドにおいてメイン ビルド プロセスによって作成されるワーカー プロセス) から報告されるビルド イベントの情報を収集します。イベントを受け取ると、転送 logger は指定された条件に基づいて中央 logger に転送するイベントを選択します。

監視の対象とするイベントを処理するためには、転送 logger を登録する必要があります。イベントを処理する転送 logger を登録するためには、logger において Initialize メソッドをオーバーライドする必要があります。このメソッドには、オプションのパラメーターである nodecount が追加されました。このパラメーターをシステムのプロセッサ数に設定できます (既定値は 1 です)。

監視できるイベントの例として、TargetStartedProjectStartedProjectFinished などがあります。

マルチプロセッサ環境では、イベント メッセージが誤った順序で受信される可能性があります。そのため、転送 logger 内のイベント ハンドラーには、イベントを評価し、どのイベントをリダイレクターに渡して中心 logger に転送するかを判断する機能を組み込む必要があります。これを行うには、各メッセージにアタッチされた BuildEventContext クラスを使用します。このクラスによって、転送が必要なイベントを特定し、その名前を ConfigurableForwardingLogger クラス (またはそのサブクラス) に渡すことができます。このメソッドを使用した場合は、それ以外にイベントを転送するためのコーディングを行う必要はありません。

転送 logger の指定

転送 logger をアセンブリにコンパイルした後で、MSBuild に対してビルド プロセスで転送 logger を使用するように指定する必要があります。そのためには、MSBuild.exe に/FileLogger、/FileLoggerParameters、/DistributedFileLogger の各スイッチを指定します。/FileLogger スイッチは、logger が直接アタッチされていることを MSBuild.exe に通知します。/DistributedFileLogger スイッチは、ノードごとにログ ファイルが存在することを示します。転送 logger にパラメーターを設定するには、/FileLoggerParameters スイッチを使用します。上記およびその他の MSBuild.exe スイッチの詳細については、「MSBuild コマンド ライン リファレンス」を参照してください。

マルチプロセッサ対応の logger

マルチプロセッサ システムでプロジェクトをビルドする場合、各プロセッサからのビルド メッセージが自動的に一貫した順序でインタリーブされるわけではありません。したがって、各メッセージにアタッチされる BuildEventContext クラスを使用して、メッセージ グループ化の優先順位を定義する必要があります。マルチプロセッサでのビルド処理の詳細については、「マルチプロセッサ環境でのログ」を参照してください。

参照

概念

MSBuild でのビルド ログの取得

ビルド ロガー

マルチプロセッサ環境でのログ