Loggers múltiplo-processador reconhecimento de escrita
A capacidade de MSBuild 3.5 para tirar proveito dos diversos processadores podem diminuir o time de criação do projeto, mas ele também adiciona complexidade ao registrar registrar registrar em log de eventos de compilação. 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 multi-processador ambiente, eventos de origens diferentes podem chegar ao mesmo time ou fora de sequência.Para isso, MSBuild3.5 fornece um agente de registrar registrar registrar em log com vários-processador reconhecimento e um novo modelo de registrar registrar registrar em log e permite que você criar personalizada "registradores de encaminhamento".
Desafios multi-processador registrar registrar registrar em log
Quando você constrói um ou mais projetos em multi-processador ou sistema multi-core, MSBuild eventos de compilação de todos os projetos são gerados ao mesmo time. Uma avalanche de mensagens de evento pode chegar ao agente de log ao mesmo time ou fora de sequência.Porque um MSBuild agente de log 2.0 não foi projetado para lidar com essa situação, ele pode sobrecarregar o agente de log e causar vezes maior compilação, saída incorreta do agente de log ou até mesmo uma compilação interrompida. Para solucionar esses problemas, a MSBuild agente de log de 3,5 pode processar fora de sequência eventos e correlacionar eventos e suas origens.
Você pode melhorar a eficiência de registrar registrar registrar em log ainda mais, criando um agente de registrar registrar registrar em log de encaminhamento personalizado.Um agente de log de encaminhamento personalizado atua sistema autônomo um filtro, permitindo que você escolher, antes de você compilação, somente sistema autônomo eventos que você deseja monitorar.Quando você usa um agente de log personalizado encaminhamento indesejados eventos não pode sobrecarregar o agente de log, truncar os logs ou lenta compilação vezes.
Multi-processador log modelos
Para fornecer vários processadores relacionados compilação emite, MSBuild 3.5 suporta dois modelos de registro, distribuídos e central.
Modelo de registrar registrar registrar em log central
No modelo de registrar registrar registrar em log central, uma única instância de MSBuild.exe age sistema autônomo o "nó central" e anexar o nó central para ajudá-lo a executar tarefas de compilação instâncias filho do nó central ("nós secundários").
Registradores de vários tipos de anexar ao nó central são conhecidos sistema autônomo "central registradores." Apenas uma instância de cada tipo de agente de log é possível anexar a nó central ao mesmo time.
Quando ocorre uma compilação, nós secundários circular seus eventos de compilação para o nó central.Nó central encaminha todos os seus eventos e também aqueles de nós secundários, para um ou mais dos registradores central anexados.Os agentes de log, em seguida, criar arquivos de log que são baseados em dados de entrada.
Embora apenas ILogger é necessário para ser implementado por um agente de log central, recomendamos que você também implementar INodeLogger para que o agente de log central inicializa com o número de nós que estão participando de compilação. A seguir sobrecarga do 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-registradores com base pode agir sistema autônomo registradores de central e pode anexar a compilação. No entanto, registradores central escritos sem suporte explícito para cenários de registrar registrar registrar em log com vários processadores e fora de ordem eventos podem quebrar uma compilação ou produzir saída sem sentido.
Modelo de log distribuído
No modelo de registrar registrar registrar em log central, muito tráfego mensagem de entrada pode sobrecarregar o nó central, por exemplo, ao criar vários projetos ao mesmo time.Isso pode enfatizar os recursos do sistema e diminuir o desempenho da compilação.Para facilitar a esse problema, MSBuild 3.5 oferece suporte a um modelo de registrar registrar registrar em log distribuído.
O modelo de registrar registrar registrar em log distribuído amplia o modelo de registrar registrar registrar em log central, permitindo que você criar um agente de registrar registrar registrar em log de encaminhamento.
Encaminhamento loggers
Um agente de log de encaminhamento é um agente de log secundário e leve que tenha um filtro de evento que conecta a um nó secundário e recebe eventos de compilação recebidos do nó.Ele filtra os eventos de entrada e encaminha apenas aquelas que você especificar para o nó central.Isso reduz o tráfego de mensagens que é enviado para o nó central e melhora o desempenho geral de compilação.
Há duas maneiras de usar o registrar registrar registrar em log distribuído, sistema autônomo segue:
Personalizar o agente de log de encaminhamento pre-fabricated chamado ConfigurableForwardingLogger.
Grave seu próprio agente de log de encaminhamento personalizado.
Você pode modificar ConfigurableForwardingLogger para atender às suas necessidades.Para fazer isso, chame o agente de log na linha de comando usando MSBuild.exe e listar os eventos de compilação que você deseja que o agente de log para encaminhar para o nó central.
sistema autônomo alternativa, você pode criar um agente de log de encaminhamento personalizado.Criando um agente de log de encaminhamento personalizado, você pode ajustar o comportamento do agente de log.No entanto, é mais complexa do que apenas personalizando a ConfigurableForwardingLogger criar um agente de log de encaminhamento personalizado.Para obter mais informações, consulte Criando Forwarding Loggers.
Usando o ConfigurableForwardingLogger para simples Distributed registrar registrar registrar em log
Para anexar em um ConfigurableForwardingLogger ou um agente de log de encaminhamento personalizado, use o /distributedlogger comutador)/dl de forma abreviada) em uma compilação de linha de comando MSBuild.exe. O formato para especificar nomes de tipos de agente de registrar registrar registrar em log e classes é o mesmo que o /logger comutador, exceto pelo fato de que um agente de registrar registrar registrar em log distribuído sempre tem duas classes de registrar registrar registrar em log em vez de um, o agente de registrar registrar registrar em log de encaminhamento e o agente de registrar registrar registrar em log central. A seguir é um exemplo de como anexar um agente de log de encaminhamento personalizado chamado 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 agente de dois log na /dl Alterne. |
Usar o ConfigurableForwardingLogger é sistema autônomo usar Outros agente de log (conforme descrito em Visão geral do registrar em log no MSBuild), exceto que você anexa o agente de log ConfigurableForwardingLogger em vez da comum MSBuild agente de log e você especificar sistema autônomo parâmetros de eventos que você deseja ConfigurableForwardingLogger para passar para o nó central.
Por exemplo, se você deseja ser notificado quando uma compilação começa e termina e quando ocorre um erro, passariam BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, e ERROREVENT sistema autônomo parâmetros. Vários parâmetros podem ser passados separando-os com ponto-e-vírgulas.A seguir é 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
A seguir está uma lista dos parâmetros ConfigurableForwardingLogger disponível.
Parâmetros ConfigurableForwardingLogger |
---|
BUILDSTARTEDEVENT |
BUILDFINISHEDEVENT |
PROJECTSTARTEDEVENT |
PROJECTFINISHEDEVENT |
TARGETSTARTEDEVENT |
TARGETFINISHEDEVENT |
TASKSTARTEDEVENT |
TASKFINISHEDEVENT |
ERROREVENT |
WARNINGEVENT |
HIGHMESSAGEEVENT |
NORMALMESSAGEEVENT |
LOWMESSAGEEVENT |
CUSTOMEVENT |
LINHA DE COMANDO |
PERFORMANCESUMMARY |
NOSUMMARY |
SHOWCOMMANDLINE |