Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
L'inoltro dei logger migliora l'efficienza di registrazione consentendo di scegliere gli eventi da monitorare quando si compilano progetti in un sistema multiprocessore. Abilitando i logger di inoltro, è possibile impedire agli eventi indesiderati di sovraccaricare il logger centrale, rallentare il tempo di compilazione e ingombrare il log.
Per creare un logger di inoltro, è possibile implementare l'interfaccia IForwardingLogger e quindi implementarne i metodi manualmente oppure usare la ConfigurableForwardingLogger classe e i relativi metodi preconfigurato. Quest'ultimo sarà sufficiente per la maggior parte delle applicazioni.
Registrare gli eventi e rispondere
Un logger di inoltro raccoglie informazioni sugli eventi di compilazione quando vengono segnalati dal motore di compilazione secondario, ovvero un processo di lavoro creato dal processo di compilazione principale durante una compilazione in un sistema multiprocessore. Il logger di inoltro seleziona quindi gli eventi da inoltrare al logger centrale, in base alle istruzioni fornite.
È necessario registrare i logger di inoltro per gestire gli eventi da monitorare. Per eseguire la registrazione per gli eventi, i logger devono eseguire l'override del Initialize metodo . Questo metodo include ora un parametro facoltativo, nodecount, che può essere impostato sul numero di processori nel sistema. Per impostazione predefinita, il valore è 1.
Esempi di eventi che è possibile monitorare sono TargetStarted, ProjectStartede ProjectFinished.
In un ambiente multiprocessore è probabile che i messaggi di evento vengano ricevuti in ordine non corretto. Pertanto, è necessario valutare gli eventi usando il gestore eventi nel logger di inoltro e programmarlo per determinare quali eventi passare al redirector per l'inoltro al logger centrale. A tale scopo, è possibile usare la BuildEventContext classe , collegata a ogni messaggio, per identificare gli eventi da inoltrare e quindi passare i nomi degli eventi alla ConfigurableForwardingLogger classe (o una sottoclasse di esso). Quando si usa questo metodo, non è necessario alcun altro codice specifico per inoltrare gli eventi.
Specificare un logger di inoltro
Dopo che il logger di inoltro è stato compilato in un assembly, è necessario indicare a MSBuild di usarlo durante le compilazioni. A tale scopo, usare gli interruttori -FileLogger, -FileLoggerParameters e -DistributedFileLogger insieme a MSBuild.exe. L'opzione -FileLogger indica MSBuild.exe che il logger è collegato direttamente. L'opzione -DistributedFileLogger indica che è presente un file di log per nodo. Per impostare i parametri nel logger di inoltro, usare l'opzione -FileLoggerParameters . Per ulteriori informazioni su questi e altri commutatori MSBuild.exe, vedere Riferimenti sulla riga di comando.
Logger ottimizzati per più processori
Quando si compila un progetto in un sistema multiprocessore, i messaggi di compilazione di ogni processore non vengono automaticamente interleavati in una sequenza unificata. È invece necessario stabilire una priorità di raggruppamento di messaggi usando la BuildEventContext classe associata a ogni messaggio. Per ulteriori informazioni sulla compilazione in un ambiente multiprocessore, vedere Log in un ambiente multiprocessore.