Создание средства ведения журнала с перенаправлением

Средства ведения журнала переадресации повышают эффективность ведения журналов, позволяя выбрать события, которые требуется отслеживать при сборке проектов в многопроцессорной системе. Включив эти средства ведения журнала переадресации, можно предотвратить переполнение центрального средства ведения журнала нежелательными событиями, замедление сборки и загромождение журнала.

Чтобы создать средство ведения журнала переадресации, можно либо реализовать интерфейс IForwardingLogger и вручную реализовать его методы либо использовать класс ConfigurableForwardingLogger и его предварительно настроенные методы. (Последний вариант подойдет для большинства приложений.)

Регистрация событий и реагирование на них

Средство ведения журнала переадресации собирает сведения о событиях сборки, о которых сообщает вторичный обработчик сборки, который представляет собой рабочий процесс, созданный основным процессом сборки во время сборки в многопроцессорной системе. Затем это средство выбирает события журнала, которые следует переадресовать в центральное средство ведения журнала в соответствии с заданными вами инструкциями.

Для обработки событий, которые требуется отслеживать, нужно зарегистрировать средство ведения журнала переадресации. Чтобы зарегистрироваться для событий, средства ведения журнала должны переопределить метод Initialize. Сейчас этот метод имеет необязательный параметр nodecount, в котором можно указать число процессоров в системе. (По умолчанию это значение равно 1.)

Примерами событий, которые вы можете отслеживать, являются TargetStarted, ProjectStarted и ProjectFinished.

В многопроцессорной среде сообщения о событиях часто принимаются в неправильном порядке. Поэтому нужно оценить события с помощью обработчика событий в средстве ведения журнала переадресации и запрограммировать его, чтобы определить, какие события нужно передавать в перенаправитель для переадресации на центральное средство ведения журнала. Для этого можно использовать класс BuildEventContext, прикрепленный к каждому сообщению, который поможет определить события для переадресации, после чего передайте имена событий в класс ConfigurableForwardingLogger (или его подкласс). При использовании этого метода для переадресации событий не требуется писать специальный код.

Указание средства ведения журнала переадресации

Когда средство ведения журнала переадресации скомпилировано в сборку, в MSBuild нужно передать информацию о том, что это средство ведения журнала следует использовать во время сборки. Для этого используйте параметры -FileLogger, -FileLoggerParameters и -DistributedFileLogger вместе с MSBuild.exe. Параметр -FileLogger сообщает MSBuild.exe, что средство ведения журнала подключено напрямую. Параметр -DistributedFileLogger означает, что файл журнала присутствует на каждом узле. Чтобы задать параметры средства ведения журнала переадресации, используйте параметр -FileLoggerParameters. Дополнительные сведения об этих и других параметрах MSBuild.exe см. в справочнике по командной строке.

Средства ведения журнала с поддержкой многопроцессорности

При сборке проекта в многопроцессорной системе сообщения о сборке от каждого процессора не чередуются автоматически в определенной последовательности. Вместо этого нужно назначить приоритет группирования сообщений с помощью класса BuildEventContext, который присоединяется к каждому сообщению. Дополнительные сведения о сборке в многопроцессорной среде см. в разделе Ведение журнала в многопроцессорной среде.