通过转发记录器,可以选择要在多处理器系统上生成项目时要监视的事件,从而提高日志记录效率。 通过启用转发记录器,可以阻止不需要的事件压倒中央记录器、降低生成时间以及使日志混乱。
若要创建转发记录器,可以实现 IForwardingLogger 接口,然后手动实现其方法,或使用 ConfigurableForwardingLogger 类及其预配置的方法。 (后者将足以满足大多数应用程序。
注册并响应事件
辅助生成引擎报告生成事件后,转发记录器会收集有关生成事件的信息,这是主生成过程在多处理器系统上进行生成的过程中创建的工作进程。 然后,转发记录器根据给定的说明选择要转发到中央记录器的事件。
您必须注册转发记录器来处理要监视的事件。 要注册事件,记录器必须重写 Initialize 方法。 此方法现在包括一个可选参数, nodecount
该参数可以设置为系统中的处理器数。 (默认情况下,值为 1。
可以监视的事件示例有TargetStarted、ProjectStarted和ProjectFinished。
在多处理器环境中,事件消息的接收顺序可能是紊乱的。 因此,必须使用转发记录器中的事件处理程序来评估事件,并对其进行编程,以确定要传递给重定向程序以转发到中央记录器的事件。 为此,可以使用 BuildEventContext 附加到每条消息的类来帮助标识要转发的事件,然后将事件 ConfigurableForwardingLogger 的名称传递给类(或它的子类)。 使用此方法时,转发事件不需要其他特定的编码。
指定转发记录器
当日志转发器被编译到程序集后,必须告知 MSBuild 在构建过程中使用该日志转发器。 为此,请将 -FileLogger
、-FileLoggerParameters
和 -DistributedFileLogger
开关与 MSBuild.exe 一起使用。 该 -FileLogger
开关告知 MSBuild.exe 日志记录器已直接连接上。 该 -DistributedFileLogger
开关表示每个节点都有日志文件。 若要在转发记录器上设置参数,请使用 -FileLoggerParameters
开关。 有关这些开关和其他 MSBuild.exe 开关的详细信息,请参阅 命令行参考。
可识别多处理器的记录器
在多处理器系统上生成项目时,来自每个处理器的生成消息不会自动交错在统一序列中。 相反,必须使用附加到每条消息的 BuildEventContext 类来建立消息分组优先级。 有关多处理器生成的详细信息,请参阅 多处理器环境中的日志记录。