Créer des journaux de transfertCreate forwarding loggers

Les journaux de transfert améliorent l’efficacité de la journalisation en vous permettant de choisir les événements que vous voulez suivre quand vous générez des projets sur un système multiprocesseur.Forwarding loggers improve logging efficiency by letting you choose the events you want to monitor when you build projects on a multi-processor system. En activant les journaux de transfert, vous pouvez empêcher des événements indésirables de submerger le journal central, de ralentir la génération et d’encombrer votre journal.By enabling forwarding loggers, you can prevent unwanted events from overwhelming the central logger, slowing build time, and cluttering your log.

Pour créer un journal de transfert, vous pouvez implémenter l’interface IForwardingLogger, puis implémenter ses méthodes manuellement ou utiliser la classe ConfigurableForwardingLogger et ses méthodes préconfigurées.To create a forwarding logger, you can either implement the IForwardingLogger interface and then implement its methods manually, or use the ConfigurableForwardingLogger class and its pre-configured methods. (L’utilisation de cette classe est suffisante pour la plupart des applications.)(The latter will suffice for most applications.)

Inscrire les événements et y répondreRegister events and respond to them

Un journal de transfert rassemble des informations sur les événements de génération tels qu’ils sont signalés par le moteur de génération secondaire, qui est un processus de travail créé par le processus de génération principal lors d’une génération sur un système multiprocesseur.A forwarding logger gathers information about build events as they are reported by the secondary build engine, which is a worker process that is created by the main build process during a build on a multi-processor system. Le journal de transfert sélectionne ensuite les événements à transférer au journal central, en fonction des instructions qui vous lui avez données.Then the forwarding logger selects events to forward to the central logger, based on the instructions you have given it.

Vous devez inscrire les journaux de transfert pour gérer les événements que vous voulez suivre.You must register forwarding loggers to handle the events you want to monitor. Pour s’inscrire à des événements, les journaux doivent remplacer la méthode Initialize.To register for events, loggers must override the Initialize method. Cette méthode inclut maintenant un paramètre facultatif, nodecount, qui peut être défini sur le nombre de processeurs dans le système.This method now includes an optional parameter, nodecount, that can be set to the number of processors in the system. (Par défaut, la valeur est 1.)(By default, the value is 1.)

TargetStarted, ProjectStarted et ProjectFinished sont des exemples d’événements que vous pouvez suivre.Examples of events you can monitor are TargetStarted, ProjectStarted, and ProjectFinished.

Dans un environnement multiprocesseur, les messages d’événement peuvent arriver dans le désordre.In a multi-processor environment, event messages are likely to be received out of order. Vous devez donc évaluer les événements en utilisant le gestionnaire d’événements dans le journal de transfert et le programmer de façon à déterminer quels événements passer au redirecteur pour les transférer au journal central.Therefore, you must evaluate the events by using the event handler in the forwarding logger and program it to determine which events to pass to the redirector for forwarding to the central logger. Pour cela, vous pouvez utiliser la classe BuildEventContext qui est attachée à chaque message, pour identifier les événements que vous voulez transférer, puis passer les noms des événements à la classe ConfigurableForwardingLogger (ou à une de ses sous-classes).To accomplish this, you can use the BuildEventContext class, which is attached to every message, to help identify events you want to forward, and then pass the names of the events to the ConfigurableForwardingLogger class (or a subclass of it). Quand vous utilisez cette méthode, aucun autre code spécifique n’est nécessaire pour transférer des événements.When you use this method, no other specific coding is required to forward events.

Spécifier un journal de transfertSpecify a forwarding logger

Une fois que le journal de transfert a été compilé en assembly, vous devez indiquer à MSBuildMSBuild qu’il faut l’utiliser lors des générations.After the forwarding logger has been compiled into an assembly, you must tell MSBuildMSBuild to use it during builds. Pour cela, utilisez les commutateurs /FileLogger, /FileLoggerParameters et /DistributedFileLogger avec MSBuild.exe.To do this, use the /FileLogger, /FileLoggerParameters, and /DistributedFileLogger switches together with MSBuild.exe. Le commutateur /FileLogger indique à MSBuild.exe que le journal est directement attaché.The /FileLogger switch tells MSBuild.exe that the logger is directly attached. Le commutateur /DistributedFileLogger signifie qu’il existe un fichier journal par nœud.The /DistributedFileLogger switch means that there is a log file per node. Pour définir des paramètres sur le journal de transfert, utilisez le commutateur /FileLoggerParameters.To set parameters on the forwarding logger, use the /FileLoggerParameters switch. Pour plus d’informations sur ces commutateurs et sur d’autres commutateurs de MSBuild.exe, consultez Informations de référence sur la ligne de commande.For more information about these and other MSBuild.exe switches, see Command-line reference.

Enregistreurs d’événements prenant en charge plusieurs processeursMulti-processor-aware loggers

Quand vous générez un projet sur un système multiprocesseur, les messages de génération provenant de chaque processeur ne sont pas automatiquement entrelacés dans une séquence unifiée.When you build a project on a multi-processor system, the build messages from each processor are not automatically interleaved in a unified sequence. Vous devez donc établir une priorité de regroupement des messages avec la classe BuildEventContext qui est attachée à chaque message.Instead, you must establish a message grouping priority by using the BuildEventContext class that is attached to every message. Pour plus d’informations sur la génération multiprocesseur, consultez Journalisation dans un environnement multiprocesseur.For more information about multi-processor building, see Logging in a multi-processor environment.

Voir aussiSee also

Obtenir des journaux de génération Obtain build logs
Enregistreurs d’événements de génération Build loggers
Journalisation dans un environnement multiprocesseurLogging in a multi-processor environment