Gravando vários-Loggers ciente do processador-
A capacidade de MSBuild 3.5 para aproveitar os vários processadores pode diminuir o projeto de construção de tempo, mas também adiciona complexidade para criar o log de eventos. Em um ambiente de processador único, eventos, mensagens, avisos e erros de chegarem ao agente de log de maneira previsível e seqüencial. No entanto, em um ambiente com vários processadores, eventos de origens diferentes podem chegar ao mesmo tempo ou fora de seqüência. Para isso, MSBuild 3.5 fornece um agente de multi-processador-aware e um novo modelo de log e permite que você criar personalizados "encaminhar" registradores.
Desafios de log de multiprocessadores
Quando você cria um ou mais projetos em um sistema com vários processadores ou vários núcleos, MSBuild build events para todos os projetos são gerados ao mesmo tempo. Uma avalanche de mensagens de evento pode chegar ao agente de log ao mesmo tempo ou fora de seqüência. Porque um MSBuild 2.0 do agente de log não foi projetado para lidar com essa situação, ele pode sobrecarregar o agente de log e fazer com que os horários de maior compilação, saída incorreta do agente de log ou até mesmo um quebrado compilação. Para solucionar esses problemas, o MSBuild 3,5 logger pode processar fora de seqüência de eventos e correlacionar eventos e suas fontes.
Você pode melhorar a eficiência de log ainda mais a criação de um agente de log personalizado de encaminhamento. Um agente de log de encaminhamento personalizado atua como um filtro, permitindo que você escolher, antes de criar, somente os eventos que você deseja monitorar. Quando você usa um agente de log personalizado de encaminhamento, eventos indesejados não podem sobrecarregar o agente de log, truncar os logs ou lenta construir vezes.
Modelos de registro de multiprocessadores
Para fornecer para problemas de compilação de processador múltiplo relacionados, MSBuild 3.5 suporta dois modelos de log, distribuídos e central.
Modelo de log central
O modelo de central de registro, uma única instância do MSBuild. exe age como o "nó central", e anexar de instâncias do filho do nó central ("nós secundários") para o nó central para ajudá-lo a executar tarefas de compilação.
Registradores de vários tipos de anexar ao nó central são conhecidos como "registradores central". Apenas uma instância de cada tipo de agente de log pode ser anexada ao nó central ao mesmo tempo.
Quando uma compilação ocorre, nós secundários roteiam seus eventos de compilação para o nó central. O nó central roteia a todos os seus eventos e também aqueles de nós secundários, para um ou mais dos registradores central anexados. Os registradores, então, criar arquivos de log que são baseados em dados de entrada.
Embora somente ILogger é necessária para ser implementado por um agente de log central, recomendamos que você implemente também INodeLogger para que o agente de log central inicializa com o número de nós que estão participando da compilação. O seguinte da sobrecarga da Initialize método chama quando o mecanismo inicializa o agente de log.
public interface INodeLogger: ILogger
{
public void Initialize(IEventSource eventSource, int nodeCount);
}
Qualquer preexistente ILogger-loggers com base pode atuar como registradores de central e pode anexar a compilação. No entanto, registradores de central escritos sem suporte explícito para cenários de log de multiprocessadores e fora de ordem eventos podem quebrar uma compilação ou produzir saída sem sentido.
Modelo de log distribuído
No modelo de log central, muito tráfego de mensagens de entrada pode sobrecarregar o nó central, por exemplo, quando a criação de vários projetos ao mesmo tempo. Isso pode enfatizar os recursos do sistema e diminuir o desempenho da compilação. Para facilitar esse problema, MSBuild 3.5 oferece suporte a um modelo de log distribuído.
O modelo de log distribuído amplia o modelo de log central, permitindo que você criar um agente de log de encaminhamento.
Registradores de encaminhamento
Um agente de log de encaminhamento é um agente de log secundário leve que tem um filtro de evento que anexa a um nó secundário e recebe eventos de compilação de entrada de nó. Ele filtra os eventos de entrada e o encaminha somente aqueles que você especificar para o nó central. Isso reduz o tráfego de mensagens é enviado para o nó central e melhora o desempenho geral de compilação.
Há duas maneiras de usar o log distribuído, da seguinte maneira:
Personalizar o agente de log de encaminhamento pré-fabricados chamado ConfigurableForwardingLogger.
Escreva seu próprio agente de log personalizado de encaminhamento.
Você pode modificar o ConfigurableForwardingLogger para atender às suas necessidades. Para fazer isso, ligue para o agente de log na linha de comando usando MSBuild. exe e relacionar os eventos de compilação que você deseja que o agente de log para encaminhar para o nó central.
Como alternativa, você pode criar um agente de log personalizado de encaminhamento. Criando um agente de log de encaminhamento personalizado, você pode ajustar o comportamento do agente de log. No entanto, a criação de um agente de log personalizado de encaminhamento é mais complexa do que apenas Personalizando o ConfigurableForwardingLogger. Para obter mais informações, consulte Criação de registradores de encaminhamento..
Usar o ConfigurableForwardingLogger simples distribuídos log
Para anexar um ConfigurableForwardingLogger ou um agente de log de encaminhamento personalizado, use o /distributedlogger switch (/dl de forma abreviada) em uma compilação de linha de comando MSBuild. exe. O formato para especificar os nomes das classes e tipos de agente de log é o mesmo que para o /logger Alternar, exceto que um agente de log distribuído sempre tem duas classes de log em vez de um, o agente de log de encaminhamento e logger central. A seguir é um exemplo de como anexar a um agente de log de encaminhamento personalizado denominado XMLForwardingLogger.
C:\ WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,Culture=neutral
Observação |
---|
Um asterisco (*) deve separar os nomes de dois logger na /dl switch. |
Usar o ConfigurableForwardingLogger é como usar o outro agente de log (conforme descrito em Visão geral dos logs no MSBuild), exceto que você anexar o agente de log em vez do típico ConfigurableForwardingLogger MSBuild logger e você especificar como parâmetros os eventos que você deseja que o ConfigurableForwardingLogger para passar para o nó central.
Por exemplo, se você deseja ser notificado quando uma compilação inicia e termina e quando ocorre um erro, você poderia passar BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, e ERROREVENT como parâmetros. Vários parâmetros podem ser passados separando-os com ponto e vírgula. A seguir está um exemplo de como usar o ConfigurableForwardingLogger para encaminhar apenas o BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, e ERROREVENT eventos.
C:\ WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj /distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*ConfigureableForwardingLogger,C:\My.dll;BUILDSTARTEDEVENT; BUILDFINISHEDEVENT;ERROREVENT
Veja a seguir uma lista de parâmetros de ConfigurableForwardingLogger disponíveis.
Parâmetros de ConfigurableForwardingLogger |
---|
BUILDSTARTEDEVENT |
BUILDFINISHEDEVENT |
PROJECTSTARTEDEVENT |
PROJECTFINISHEDEVENT |
TARGETSTARTEDEVENT |
TARGETFINISHEDEVENT |
TASKSTARTEDEVENT |
TASKFINISHEDEVENT |
ERROREVENT |
WARNINGEVENT |
HIGHMESSAGEEVENT |
NORMALMESSAGEEVENT |
LOWMESSAGEEVENT |
CUSTOMEVENT |
LINHA DE COMANDO |
PERFORMANCESUMMARY |
NOSUMMARY |
SHOWCOMMANDLINE |