Zápis protokolovacích nástrojů pro více procesorů
Schopnost MSBuild využívat více procesorů, může snížit čas vytvoření projektu, ale také přidá složitost vytvoření protokolování událostí.V prostředí s jedním procesorem události, zprávy, upozornění a chyby dorazit protokolování v předvídatelné, sekvenčním způsobem.Nicméně v prostředí s více procesory události z různých zdrojů dorazit ve stejnou dobu nebo mimo pořadí.Stanovit, MSBuild poskytuje více-processor podporující protokolování a protokolování nový model a umožňuje vytvořit vlastní "předávání úhozy kláves."
Problémy s více procesory protokolování
Při sestavení jednoho nebo více projektů v systému s více procesory nebo více jader, MSBuild události pro všechny projekty, které jsou generovány v okamžiku sestavení.Lavině zprávy událostí může dorazit protokolování ve stejné době nebo mimo pořadí.Protože MSBuild 2.0 protokolování není určena ke zpracování této situace, může způsobit zvýšené sestavení časy, nesprávné protokolování výstupu nebo přerušení sestavení a přebytek nadbytek protokolování.Chcete-li vyřešit tyto problémy, protokolování (spuštění v MSBuild 3.5) lze zpracovávat události mimo pořadí a korelaci událostí a jejich zdrojů.
Můžete zlepšit efektivitu protokolování ještě více tak, že vytvoříte vlastní předávání protokolů.Předávání vlastní protokolovací nástroj funguje jako filtr tím, že umožňuje zvolit před sestavením, pouze události, které chcete sledovat.Při použití vlastní předávání protokolů nežádoucí události nelze protokolování přebytek nadbytek zbytečných souborů protokolů a pomalu sestavení.
Modely s více procesory protokolování
Pro sestavení více-processor-související problémy, MSBuild podporuje dva modely protokolování střední a distribuované.
Centrální protokolování Model
V modelu Centrální protokolování jednu instanci MSBuild.exe funguje jako"střední" a podřízené instance centrální uzel ("sekundární uzly") připojte k centrální uzel umožňuje provádět úlohy sestavení.
Úhozy kláves různých typů, připojené na centrální uzel se označují jako "centrální úhozy kláves." Pouze jedna instance každého typu protokolu může být připojen na centrální uzel ve stejnou dobu.
Dojde-li k sestavení, sekundární uzly postupu jejich události sestavení na centrální uzel.Centrální uzel směruje všechny jeho události a také ty sekundární uzly pro jeden nebo více připojených centrální úhozy kláves.Úhozy kláves vytvořte soubory protokolu, které jsou založeny na příchozí data.
Ovšem pouze ILogger je nutné provést centrálního protokolovacího nástroje, doporučujeme, abyste také implementovat INodeLogger tak, aby počet uzlů, které se účastní sestavení inicializuje centrálního protokolovacího nástroje.Následující přetížení systému Initialize metoda vyvolá při inicializuje modul protokolování.
public interface INodeLogger: ILogger
{
public void Initialize(IEventSource eventSource, int nodeCount);
}
Již existujícími ILogger-založené úhozy kláves může sloužit jako centrální úhozy kláves a připojit k sestavení.Centrální úhozy kláves zapsán bez explicitní podporu pro scénáře s více procesory protokolování a mimo pořadí událostí však může rozdělit sestavení nebo vyprodukovat výstup bezvýznamné.
Model distribuované protokolování
Přebytek v modelu Centrální protokolování příliš mnoho příchozích zpráv může nadbytek centrální uzel, například vytváření více projektů současně.To lze zdůraznit systémové prostředky a snížit výkon sestavení.Chcete-li usnadnit tento problém MSBuild podporuje model distribuované protokolování.
Model distribuované protokolování rozšiřuje model Centrální protokolování tím, že umožňuje vytvořit předávací protokoly.
Předávání úhozy kláves
Předávání protokolů je sekundární, lehké logger, který má filtr událostí připojí k sekundární uzel, který přijímá příchozí události sestavení z daného uzlu.Filtruje příchozí události a předá pouze ty, které zadáte na centrální uzel.To snižuje přenos zpráv, který je odeslán na centrální uzel a zlepšuje celkový výkon sestavení.
Existují dva způsoby použití distribuovaných protokolování, takto:
Přizpůsobení protokolování předem kovodělných předávání s názvem ConfigurableForwardingLogger.
Napište vlastní vlastní předávání protokolů.
ConfigurableForwardingLogger přizpůsobit vašim požadavkům, můžete změnit.Volání nástroje příkazového řádku MSBuild.exe a seznam sestavení události, které chcete, aby protokoly pro předávání na centrální uzel.
Alternativně můžete vytvořit vlastní předávání protokolů.Vytvořením vlastního předávání protokolů lze optimalizovat chování protokolování.Vytvoření vlastní předávání protokolů je však mnohem složitější, než jen přizpůsobení ConfigurableForwardingLogger.Další informace naleznete v tématu Vytváření předávajících (sekundárních) protokolovacích nástrojů.
Pro jednoduché použití ConfigurableForwardingLogger Distributed protokolování
Připojit ConfigurableForwardingLogger nebo vlastní předávací protokoly, použití /distributedlogger přepnout (/dl pro krátké) v MSBuild.exe příkazového řádku sestavení.Formát pro zadávání názvů typů protokolů a třídy je stejný jako u /logger přepnout, s tím rozdílem, že distribuované logger má vždy dvě třídy protokolování místo jednoho předávání protokolů a centrálního protokolovacího nástroje.Následuje příklad toho, jak připojit vlastní předávání protokolovací nástroj s názvem XMLForwardingLogger.
msbuild.exe myproj.proj/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,Culture=neutral
[!POZNÁMKA]
Hvězdička (*) musí oddělte názvy dvou protokolů v /dl přepnout.
Použití ConfigurableForwardingLogger je podobné jako použití jiných protokolů (jak je uvedeno v Získávání protokolů o sestavení pomocí nástroje MSBuild), s tím rozdílem, že připojit logger ConfigurableForwardingLogger místo obvyklých MSBuild protokolování a můžete zadat jako parametry události, které mají ConfigurableForwardingLogger předat centrální uzel.
Například, pokud chcete být upozorněni pouze v případě, že sestavení začíná a končí, a když dojde k chybě, předat BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, a ERROREVENT jako parametry.Více parametrů lze předat oddělte je středníkem.Následuje příklad použití ConfigurableForwardingLogger předávat pouze BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, a ERROREVENT události.
msbuild.exe myproj.proj /distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*ConfigureableForwardingLogger,C:\My.dll;BUILDSTARTEDEVENT; BUILDFINISHEDEVENT;ERROREVENT
Následuje seznam dostupných parametrů ConfigurableForwardingLogger.
ConfigurableForwardingLogger parametry |
---|
BUILDSTARTEDEVENT |
BUILDFINISHEDEVENT |
PROJECTSTARTEDEVENT |
PROJECTFINISHEDEVENT |
TARGETSTARTEDEVENT |
TARGETFINISHEDEVENT |
TASKSTARTEDEVENT |
TASKFINISHEDEVENT |
ERROREVENT |
WARNINGEVENT |
HIGHMESSAGEEVENT |
NORMALMESSAGEEVENT |
LOWMESSAGEEVENT |
CUSTOMEVENT |
PŘÍKAZOVÝ ŘÁDEK |
PERFORMANCESUMMARY |
NOSUMMARY |
SHOWCOMMANDLINE |
Viz také
Koncepty
Vytváření předávajících (sekundárních) protokolovacích nástrojů