Freigeben über


Weiterleitungslogger erstellen

Die Weiterleitung von Loggern verbessert die Protokollierungseffizienz, indem Sie die Ereignisse auswählen können, die Sie überwachen möchten, wenn Sie Projekte auf einem Multiprozessorsystem erstellen. Durch Aktivieren der Weiterleitung von Loggern können Sie verhindern, dass unerwünschte Ereignisse den zentralen Logger überwältigen, die Erstellungszeit verlangsamen und Ihr Protokoll überladen.

Um einen Weiterleitungsprotokollierer zu erstellen, können Sie entweder die IForwardingLogger Schnittstelle implementieren und dann seine Methoden manuell implementieren oder die Klasse und die ConfigurableForwardingLogger vorkonfigurierten Methoden verwenden. (Letzteres reicht für die meisten Anwendungen aus.)

Registrieren von Ereignissen und Reagieren auf sie

Ein Weiterleitungslogger sammelt Informationen zu Buildereignissen, da sie vom sekundären Buildmodul gemeldet werden, bei dem es sich um einen Arbeitsprozess handelt, der während eines Builds auf einem Multiprozessorsystem vom Hauptbuildprozess erstellt wird. Anschließend wählt der Weiterleitungslogger Ereignisse aus, die basierend auf den Anweisungen, die Sie gegeben haben, an den zentralen Logger weitergeleitet werden.

Sie müssen Weiterleitungsprotokollierer registrieren, um die Ereignisse zu behandeln, die Sie überwachen möchten. Protokollierungen müssen die Initialize-Methode außer Kraft setzen, um sich für Ereignisse zu registrieren. Diese Methode enthält jetzt einen optionalen Parameter, nodecountder auf die Anzahl der Prozessoren im System festgelegt werden kann. (Standardmäßig ist der Wert 1.)

Beispiele für Ereignisse, die Sie überwachen können, sind TargetStarted, ProjectStartedund ProjectFinished.

In einer Multiprozessorumgebung werden Ereignisnachrichten vermutlich nicht in der richtigen Reihenfolge empfangen. Daher müssen Sie die Ereignisse mithilfe des Ereignishandlers des Weiterleitungs-Loggers auswerten und programmieren, um zu bestimmen, welche Ereignisse an den Umleitungslogger zur Weiterleitung an den zentralen Logger übergeben werden sollen. Dazu können Sie die Klasse verwenden, die BuildEventContext an jede Nachricht angefügt ist, um Ereignisse zu identifizieren, die Sie weiterleiten möchten, und dann die Namen der Ereignisse an die ConfigurableForwardingLogger Klasse (oder eine Unterklasse davon) weiterzuleiten. Wenn Sie diese Methode verwenden, ist keine andere spezifische Codierung erforderlich, um Ereignisse weiterzuleiten.

Angeben eines Weiterleitungsprotokollierers

Nachdem der Weiterleitungsprotokollierer in eine Assembly kompiliert wurde, müssen Sie MSBuild anweisen, ihn während der Builds zu verwenden. Verwenden Sie dazu die -FileLogger, -FileLoggerParameters und -DistributedFileLogger Schalter zusammen mit MSBuild.exe. Der -FileLogger Schalter teilt MSBuild.exe mit, dass der Logger direkt angeschlossen ist. Die -DistributedFileLogger Option bedeutet, dass pro Knoten eine Protokolldatei vorhanden ist. Verwenden Sie den -FileLoggerParameters Schalter, um Parameter für den Weiterleitungsprotokollierer festzulegen. Weitere Informationen zu diesen und anderen MSBuild.exe-Schaltern finden Sie in der Befehlszeilenreferenz.

Protokollierer, die mehrere Prozessoren unterstützen

Wenn Sie ein Projekt auf einem Multiprozessorsystem erstellen, werden die Erstellungsnachrichten von jedem Prozessor nicht automatisch in einer einheitlichen Sequenz ineinander verschachtelt. Stattdessen müssen Sie mithilfe der Klasse, die mit BuildEventContext an jede Nachricht angeschlossen ist, eine Nachrichten-Gruppierungspriorität einrichten. Weitere Informationen zum Erstellen von Multiprozessoren finden Sie unter Protokollierung in einer Multiprozessorumgebung.