Condividi tramite


Creazione di logger di inoltro

I logger di inoltro consentono di migliorare l'efficienza della registrazione permettendo di scegliere gli eventi che si desidera controllare durante la compilazione di progetti in un sistema multiprocessore. L'attivazione dei logger di inoltro consente di impedire che eventi indesiderati sommergano il logger centrale, rallentando i tempi di compilazione e ingombrando il log.

Per creare un logger di inoltro è possibile implementare l'interfaccia IForwardingLogger e quindi implementare manualmente i metodi, o utilizzare la classe ConfigurableForwardingLogger e i metodi preconfigurati. La seconda modalità di creazione risulta appropriata per la maggior parte delle applicazioni.

Registrazione e risposta agli eventi

Un logger di inoltro raggruppa informazioni sugli eventi di compilazione man mano che vengono riportati dal motore di compilazione secondario che è un processo di lavoro creato dal processo di compilazione principale nel corso di una compilazione in un sistema multiprocessore. Quindi il logger di inoltro seleziona eventi da inoltrare al logger centrale, in base alle istruzioni date.

È necessario registrare logger di inoltro per gestire gli eventi che si desidera controllare. Per registrare gli eventi, i logger devono eseguire l'override del metodo Initialize. Questo metodo ora include un parametro facoltativo, nodecount che è possibile impostare sul numero di processori nel sistema. Per impostazione predefinita, il valore è 1.

Esempi di eventi da monitorare sono TargetStarted, ProjectStarted e ProjectFinished.

In un ambiente multiprocessore, i messaggi di evento verranno ricevuti probabilmente in ordine non corretto. È pertanto necessario valutare gli eventi utilizzando il gestore eventi nel logger di inoltro e programmarlo affinché determini quali eventi passare al redirector per l'inoltro al logger centrale. Per portare a termine questa attività è possibile utilizzare la classe BuildEventContext associata a ogni messaggio, per identificare gli eventi che si desidera inoltrare e quindi passare i nomi degli eventi alla classe ConfigurableForwardingLogger (o una sottoclasse). Quando si utilizza questo metodo, nessuna altra codificazione specifica è richiesta per l'inoltro degli eventi.

Specificare un logger di inoltro

Dopo la compilazione di un logger di inoltro in un assembly, è necessario che MSBuild lo utilizzi durante le compilazioni. A tale scopo, utilizzare le opzioni /FileLogger, /FileLoggerParameters e /DistributedFileLogger insieme a MSBuild.exe. L'opzione /FileLogger indica a MSBuild.exe il logger è e collegato direttamente. L'opzione /DistributedFileLogger indica che è presente un file di log per nodo. Per impostare parametri sul logger di inoltro, utilizzare l'opzione /FileLoggerParameters. Per ulteriori informazioni su queste e altre nuove opzioni di MSBuild.exe, vedere Riferimenti alla riga di comando di MSBuild.

Logger compatibili con più processori

Quando si compila un progetto in un sistema multiprocessore, i messaggi di compilazione provenienti da ogni processore non vengono sottoposti automaticamente a interfoliazione in una sequenza unificata. Invece, è necessario stabilire una priorità di raggruppamento dei messaggi utilizzando la classe BuildEventContext associata a ogni messaggio. Per ulteriori informazioni sulla compilazione multiprocessore, vedere Registrazione in un ambiente a più processori.

Vedere anche

Concetti

Recupero di log di compilazione con MSBuild

Logger di compilazione

Registrazione in un ambiente a più processori