Compartilhar via


registrar registrar registrar em log em um ambiente Multi-processador

A capacidade de MSBuild 3.5 para usar vários processadores pode diminuir bastante o time de criação do projeto, mas ele também adiciona complexidade ao registro. Em um ambiente de processador único, o agente de log pode manipular eventos de entrada, mensagens, avisos e erros de maneira previsível e seqüencial.No entanto, em multi-processador ambiente, eventos de várias fontes podem chegar simultaneamente ou fora de sequência.MSBuild3.5 fornece um agente de log vários-processador reconhecem nova e permite a criação de personalizado "encaminhar registradores."

Registro em registrar registrar registrar em log vários processador compilações

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 dados de eventos pode chegar ao agente de log ao mesmo time ou fora de sequência. Isso 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, o 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 personalizado encaminhamento atua sistema autônomo um filtro ao permitir que você escolher, antes de você compilação, sistema autônomo eventos que você deseja monitorar.Quando você usa um agente de log de encaminhamento personalizado, eventos indesejados não sobrecarregar o agente de log, truncar os logs ou lenta compilação vezes.

Modelo de registrar registrar registrar em log central

Para compilações com vários processadores, MSBuild usa um registrar registrar registrar em log central "modelo". No modelo de registrar registrar registrar em log central, uma instância de MSBuild.exe atua sistema autônomo o processo de construção principal, ou "nó central". Instâncias secundárias de MSBuild.exe ou "nós secundários" estão anexadas ao nó central.Qualquer registradores com ILogger conectadas ao nó central são conhecidos sistema autônomo "registradores central" e registradores anexados ao secundários nós são conhecidos sistema autônomo "registradores secundários."

Quando ocorre uma compilação, registradores secundários rotear seu tráfego de evento para registradores central.Como eventos se originam nos vários nós secundários, os dados de chegam ao nó central simultaneamente, mas intercalado.Para resolver o evento - para - projeto e referências de destino no evento, os argumentos do evento incluem informações de contexto do evento de compilação adicionais.

Embora apenas ILogger é necessário para ser implementado por um agente de log central, recomendamos que você também implementar INodeLogger Se você desejar que o agente de log central ao inicializar com o número de nós que estão participando de compilação. A seguir sobrecarga do Initialize método é chamado quando o mecanismo inicializa o agente de log:

public interface INodeLogger: ILogger
{
    public void Initialize(IEventSource eventSource, int nodeCount);
}

Modelo de log distribuído

No modelo de registrar registrar registrar em log central, muito tráfego de mensagem de entrada, sistema autônomo, por exemplo, quando vários projetos ao mesmo tempo, criar pode sobrecarregar o nó central, que enfatiza o sistema e reduz o desempenho da compilação.

Para reduzir esse problema, o MSBuild também permite que um registro em registrar registrar registrar em log distribuído "modelo" que estende o modelo de registrar registrar registrar em log central, permitindo que você crie registradores de encaminhamento.Um agente de log de encaminhamento é anexado a um nó secundário e recebe os eventos de entrada de compilação do nó.O agente de log de encaminhamento é como um agente de log normal, exceto pelo fato de que possa filtrar os eventos e, em seguida, encaminhar apenas aquelas desejado para o nó central.Isso reduz o tráfego de mensagens no nó central e, portanto, permite um melhor desempenho.

Você pode criar um agente de log de encaminhamento ao implementar o IForwardingLogger interface, que deriva de ILogger. A interface é definida sistema autônomo:

public interface IForwardingLogger: INodeLogger
{
    public IEventRedirector EventRedirector { get; set; }
    public int NodeId { get; set; }
}

Para encaminhar eventos em um agente de log de encaminhamento, chame o ForwardEvent método para o IEventRedirector interface. Passar o apropriado BuildEventArgs, ou um derivativo, sistema autônomo o parâmetro.

Para obter mais informações, consulte Criando Forwarding Loggers.

Anexando um agente distribuído

Para anexar um agente de log distribuído em uma linha de comando Construir, use o /distributedlogger (ou, /dl de forma abreviada) comutador. O formato para especificar sistema autônomo nomes dos tipos de agente de registrar registrar registrar em log e classes são sistema autônomo mesmos que aqueles para o /logger comutador, exceto pelo fato de que um agente de registrar registrar registrar em log distribuído é composto de duas classes de registrar registrar registrar em log: um agente de log de encaminhamento e um agente de log central.A seguir é um exemplo de anexar um agente de log distribuído:

C:\ WINDOWS\Microsoft.NET\Framework\v3.5.20301>msbuild.exe *.proj 
/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,
Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,
Culture=neutral

Um asterisco separa os nomes de dois agente de log no /dl comutador.

Consulte também

Tarefas

Como: Escrever um agente de log

Conceitos

Criando Forwarding Loggers