転送 logger の作成Creating Forwarding Loggers

転送 logger では、マルチプロセッサ システムでプロジェクトをビルドするときに監視の対象とするイベントを選択できるため、ログの効率を高めることができます。Forwarding loggers improve logging efficiency by letting you choose the events you want to monitor when you build projects on a multi-processor system. 転送 logger を有効にすることで、不要なイベントによる中心 logger の過負荷、ビルドの低速化、およびログの煩雑化を回避できます。By enabling forwarding loggers, you can prevent unwanted events from overwhelming the central logger, slowing build time, and cluttering your log.

転送 logger を作成する場合は、IForwardingLogger インターフェイスを実装してそのメソッドを手動で実装するか、ConfigurableForwardingLogger クラスとその定義済みメソッドを使用できます To create a forwarding logger, you can either implement the IForwardingLogger interface and then implement its methods manually, or use the ConfigurableForwardingLogger class and its pre-configured methods. (ほとんどのアプリケーションでは、後者で十分です)。(The latter will suffice for most applications.)

イベントの登録とイベントへの応答Register Events and Respond to Them

転送 logger は、セカンダリ ビルド エンジン (マルチプロセッサ システムでのビルド時にメイン ビルド プロセスによって作成されるワーカー プロセス) から報告されるビルド イベントの情報を収集します。A forwarding logger gathers information about build events as they are reported by the secondary build engine, which is a worker process that is created by the main build process during a build on a multi-processor system. 次に、転送 logger は指定された手順に基づいて、中心 logger に転送するイベントを選択します。Then the forwarding logger selects events to forward to the central logger, based on the instructions you have given it.

監視対象のイベントを処理するには、転送 logger を登録する必要があります。You must register forwarding loggers to handle the events you want to monitor. イベントのために登録するには、logger で Initialize メソッドをオーバーライドする必要があります。To register for events, loggers must override the Initialize method. このメソッドには省略可能なパラメーターである nodecount が追加されました。このパラメーターをシステムのプロセッサ数に設定できます This method now includes an optional parameter, nodecount, that can be set to the number of processors in the system. (既定値は 1 です)。(By default, the value is 1.)

監視できるイベントの例として、TargetStartedProjectStarted、および ProjectFinished などがあります。Examples of events you can monitor are TargetStarted, ProjectStarted, and ProjectFinished.

マルチプロセッサ環境では、イベント メッセージが誤った順序で受信される可能性があります。In a multi-processor environment, event messages are likely to be received out of order. したがって、転送 logger でイベント ハンドラーを使用してイベントを評価し、どのイベントをリダイレクターに渡して中心 logger に転送するかを判断するためにプログラミングする必要があります。Therefore, you must evaluate the events by using the event handler in the forwarding logger and program it to determine which events to pass to the redirector for forwarding to the central logger. これを行うために、各メッセージにアタッチされた BuildEventContext クラスを使用します。このクラスによって、転送が必要なイベントを特定し、イベントの名前を ConfigurableForwardingLogger クラス (またはそのサブクラス) に渡すことができます。To accomplish this, you can use the BuildEventContext class, which is attached to every message, to help identify events you want to forward, and then pass the names of the events to the ConfigurableForwardingLogger class (or a subclass of it). このメソッドを使用した場合は、それ以外にイベントを転送するためのコーディングを行う必要はありません。When you use this method, no other specific coding is required to forward events.

転送 logger の指定Specify a Forwarding Logger

転送 logger がアセンブリにコンパイルされたら、ビルド時に使用することを MSBuildMSBuild に通知する必要があります。After the forwarding logger has been compiled into an assembly, you must tell MSBuildMSBuild to use it during builds. そのためには、MSBuild.exe と共に /FileLogger/FileLoggerParameters、および /DistributedFileLogger スイッチを使用します。To do this, use the /FileLogger, /FileLoggerParameters, and /DistributedFileLogger switches together with MSBuild.exe. /FileLogger スイッチは、logger が直接アタッチされていることを MSBuild.exe に通知します。The /FileLogger switch tells MSBuild.exe that the logger is directly attached. /DistributedFileLogger スイッチは、ノードごとにログ ファイルが存在することを意味します。The /DistributedFileLogger switch means that there is a log file per node. 転送 logger にパラメーターを設定するには、/FileLoggerParameters スイッチを使用します。To set parameters on the forwarding logger, use the /FileLoggerParameters switch. 上記およびその他の MSBuild.exe スイッチの詳細については、コマンド ライン リファレンスに関するページを参照してください。For more information about these and other MSBuild.exe switches, see Command-Line Reference.

マルチプロセッサ対応の loggerMulti-Processor-Aware Loggers

マルチプロセッサ システムでプロジェクトをビルドする場合、各プロセッサからのビルド メッセージが自動的に一貫した順序でインタリーブされるわけではありません。When you build a project on a multi-processor system, the build messages from each processor are not automatically interleaved in a unified sequence. したがって、各メッセージにアタッチされる BuildEventContext クラスを使用して、メッセージ グループ化の優先順位を確立する必要があります。Instead, you must establish a message grouping priority by using the BuildEventContext class that is attached to every message. マルチプロセッサ ビルドの詳細については、「マルチプロセッサ環境でのログ」を参照してください。For more information about multi-processor building, see Logging in a Multi-Processor Environment.

関連項目See Also

ビルド ログの取得 Obtaining Build Logs
ビルド ロガー Build Loggers
マルチプロセッサ環境でのログLogging in a Multi-Processor Environment