Protokolování v prostředí s více procesory
Schopnost MSBuild 3.5 použití více procesorů lze výrazně zkrátit čas vytvoření projektu, ale také přidá složitost protokolování.V prostředí s jedním procesorem může protokolovací zpracovávat příchozí události, zprávy, upozornění a chyby v předvídatelné, sekvenčním způsobem.V prostředí s více procesory lze však události z několika zdrojů dorazí, současně nebo pořadí.MSBuild3.5 poskytuje nový logger vícestránkovém-processor-aware a umožňuje vytváření vlastních "předávání úhozy kláves."
Protokolování sestavení více procesorů
Při sestavení jednoho nebo více projektů v systému s více procesory nebo více jader, MSBuild vytvoření události pro všechny projekty jsou generovány současně. Lavině data událostí může dorazit protokolovací současně nebo pořadí. Tato dotěrnost přebytek nadbytek protokolovací a způsobit zvýšené sestavení časy, nesprávné protokolování výstupu nebo dokonce přerušené sestavení. K řešení těchto problémů MSBuild 3.5 protokolování lze zpracovávat události mimo číselné řady a korelaci událostí a jejich zdrojů.
Můžete zlepšit efektivitu protokolování, které jsou ještě více vytvořením vlastní předávání protokolů.Vlastní předávání protokolů slouží jako filtr vám umožní zvolit před vytvořením, události, které chcete sledovat.Při použití vlastního předávání protokolů nežádoucí události není dotěrnost přebytek nadbytek protokolování, zaplnit protokolů nebo pomalu sestavit časy.
Centrální protokolování modelu
U víceprocesorových sestavení MSBuild používá model centrálního protokolování"." V modelu centrálního protokolování instance MSBuild.exe slouží jako primární sestavení procesu nebo "centrální uzlu. Sekundární instancí MSBuild.exe nebo "sekundární uzly," jsou připojeny k centrální uzel.Všechny úhozy o založené na ILogger kláves připojené k centrální uzel jsou známé jako "centrální úhozy kláves" a úhozy kláves připojené k sekundární uzly jsou známé jako "sekundární úhozy kláves."
Dojde-li sestavení, sekundární úhozy kláves trasu provoz událostí centrální úhozy kláves.Protože události pocházejí z několika sekundární uzly, data současně dorazí centrální uzel, ale prokládaný.Vyřešíte událostí k projektu a cíl události odkazy argumentů události zahrnují další sestavení událostí kontextové informace.
Ačkoli pouze ILogger je požadováno provádí centrální protokolování, doporučujeme také implementovat INodeLogger Pokud chcete centrální protokolování inicializovat s počtem uzlů, které se účastní sestavení.Následující přetěžování z Initialize je volána metoda při inicializaci modulu protokolování:
public interface INodeLogger: ILogger
{
public void Initialize(IEventSource eventSource, int nodeCount);
}
Distribuovaný Model protokolování
Dotěrnost přebytek v modelu centrálního protokolování příliš mnoho příchozích zpráv, jako je například při vytváření mnoha projektech najednou, může nadbytek centrální uzel, který zdůrazňuje systému a snižuje výkon sestavení.
Chcete-li snížit tento problém MSBuild také umožňuje "protokolování distribuovaných model", která rozšiřuje model centrálního protokolování umožňuje vytvořit předávání úhozy kláves tím.Předávání protokolů sekundární uzel připojen a přijímá příchozí události sestavení z tohoto uzlu.Předávání protokolů je stejně jako běžný protokolování může filtrovat události a pak předat pouze požadované ty centrální uzel.Tím se sníží přenos zpráv na centrální uzel a proto umožňuje lepší výkon.
Předávání protokolů můžete vytvořit implementací IForwardingLogger rozhraní, které plynou z ILogger.Rozhraní je definován jako:
public interface IForwardingLogger: INodeLogger
{
public IEventRedirector EventRedirector { get; set; }
public int NodeId { get; set; }
}
Události v protokolování předávání dál, volejte ForwardEvent metodu IEventRedirector rozhraní.Předat na odpovídající BuildEventArgs, nebo derivátu, jako parametr.
Další informace naleznete v tématu Vytváření předávání úhozy kláves.
Distribuované protokolování připojení
Připojením distribuovaných protokolování na příkazovém řádku sestavení použít /distributedlogger (nebo /dl pro krátké) přepnout.Formát pro zadávání názvů typů protokolů a třídy jsou stejné jako u /logger přepnout, s výjimkou, že distribuované protokolovacího nástroje je tvořen dvěma třídami protokolování: předávání protokolů a centrální protokolování.Následuje příklad distribuovaných protokolování připojení:
C:\ WINDOWS\Microsoft.NET\Framework\v3.5.20301>msbuild.exe *.proj
/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,
Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,
Culture=neutral
Hvězdička (*) odděluje názvy dvou protokolů /dl přepnout.