次の方法で共有


転送 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 でのログの概要

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