転送 logger の作成
転送 logger では、マルチプロセッサ システムでプロジェクトをビルドするとき、監視の対象とするイベントを選択できるため、ログの効率を高めることができます。転送 logger を有効にすることにより、不要なイベントによる中心 logger の過負荷、ビルドの低速化、およびログの煩雑化を回避できます。
転送 logger を作成するには、IForwardingLogger インターフェイスを実装してそのメソッドを手動で実装するか、ConfigurableForwardingLogger クラスとその定義済みメソッドを使用します。ほとんどのアプリケーションでは、後者で十分です。
イベントの登録とイベントへの応答
転送 logger は、セカンダリ ビルド エンジン (マルチプロセッサ システムでのビルドにおいてメイン ビルド プロセスによって作成されるワーカー プロセス) から報告されるビルド イベントの情報を収集します。イベントを受け取ると、転送 logger は指定された条件に基づいて中央 logger に転送するイベントを選択します。
監視の対象とするイベントを処理するためには、転送 logger を登録する必要があります。イベントを処理する転送 logger を登録するためには、logger において Initialize メソッドをオーバーライドする必要があります。このメソッドには、オプションのパラメーターである nodecount が追加されました。このパラメーターをシステムのプロセッサ数に設定できます (既定値は 1 です)。
監視できるイベントの例として、TargetStarted、ProjectStarted、ProjectFinished などがあります。
マルチプロセッサ環境では、イベント メッセージが誤った順序で受信される可能性があります。そのため、転送 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 クラスを使用して、メッセージ グループ化の優先順位を定義する必要があります。マルチプロセッサでのビルド処理の詳細については、「マルチプロセッサ環境でのログ」を参照してください。