Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Sledování účastníků jsou body rozšiřitelnosti, které vývojářům pracovních postupů umožňují přistupovat k TrackingRecord objektům a zpracovávat je. Rozhraní .NET Framework 4.6.1 obsahuje standardního sledovacího účastníka, který zapisuje záznamy sledování jako události sledování událostí Windows (ETW). Pokud to nesplňuje vaše požadavky, můžete také napsat vlastní komponentu sledování.
Sledování účastníků
Sledovací infrastruktura umožňuje aplikaci filtru na odchozí záznamy sledování tak, že se účastník může přihlásit k odběru určité podmnožiny záznamů. Mechanismus použití filtru je prostřednictvím profilu sledování.
Windows Workflow Foundation (WF) v rozhraní .NET Framework 4.6.1 poskytuje účastníka trasování, který zapisuje záznamy trasování do relace systému Trasování událostí pro Windows. Účastník je nakonfigurovaný ve službě pracovního postupu přidáním chování specifického pro sledování v konfiguračním souboru. Povolení účastníka sledování ETW umožňuje zobrazit záznamy sledování v prohlížeči událostí. Ukázka sady SDK pro sledování pomocí ETW je dobrým způsobem, jak se seznámit se sledováním WF pomocí účastníka sledování na základě ETW.
Účastník sledování událostí pro Windows
Rozhraní .NET Framework 4.6.1 obsahuje účastníka sledování ETW, který zapisuje záznamy sledování do relace ETW. To se provádí velmi efektivně s minimálním dopadem na výkon aplikace nebo na propustnost serveru. Výhodou použití standardního účastníka sledování ETW je, že záznamy sledování, které obdrží, lze zobrazit spolu s ostatními záznamy aplikací a systémovými protokoly v Prohlížeči událostí systému Windows.
Standardní účastník sledování ETW je nakonfigurovaný v souboru Web.config, jak je znázorněno v následujícím příkladu.
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="Sample Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
<tracking>
<profiles>
<trackingProfile name="Sample Tracking Profile">
….
</trackingProfile>
</profiles>
</tracking>
</system.serviceModel>
</configuration>
Poznámka:
trackingProfile Pokud není zadaný název, například jen <etwTracking/> nebo <etwTracking profileName=""/>, použije se výchozí profil sledování nainstalovaný s rozhraním .NET Framework 4.6.1 v souboru Machine.config.
Ve Machine.config souboru se výchozí profil sledování přihlásí k odběru záznamů instancí pracovního postupu a chyb.
Ve službě ETW se události zapisují do relace ETW prostřednictvím ID zprostředkovatele. ID poskytovatele, které účastník sledování ETW používá k zapisování sledovacích záznamů do ETW, je definováno v diagnostické části souboru Web.config (v části <system.serviceModel><diagnostics>). Ve výchozím nastavení používá účastník sledování ETW výchozí ID zprostředkovatele, pokud není zadáno, jak je znázorněno v následujícím příkladu.
<system.serviceModel>
<diagnostics etwProviderId="52A3165D-4AD9-405C-B1E8-7D9A257EAC9F" />
Následující ilustrace ukazuje tok sledovacích dat pomocí účastníka sledování ETW. Jakmile data sledování dosáhnou ETW relace, můžete k nim přistupovat mnoha způsoby. Jedním z nejužitečnějších způsobů přístupu k těmto událostem je prohlížeč událostí, běžný nástroj systému Windows používaný k prohlížení protokolů a trasování z aplikací a služeb.
Sledování dat události účastníka
Účastník sledování serializuje sledovaná data událostí do relace Trasování událostí ve formátu, kde každý záznam sledování představuje jednu událost. Událost se identifikuje pomocí ID v rozsahu 100 až 199. Definice záznamů událostí sledování generované účastníkem sledování naleznete v tématu Reference ke sledování událostí .
Velikost události ETW je omezena velikostí vyrovnávací paměti ETW nebo maximální užitečnou datovou částí pro událost ETW, podle toho, která hodnota je menší. Pokud velikost události překročí některou z těchto limitů ETW, událost se zkrátí a její obsah je odstraněn náhodně. Proměnné, argumenty, poznámky a vlastní data nejsou selektivně odebrány. V případě zkrácení se všechny zkrátí bez ohledu na hodnotu, která způsobila, že velikost události překročila limit ETW. Odebraná data se nahradí znakem <item>..<item>.
Komplexní typy proměnných, argumentů a vlastních datových položek jsou serializovány do záznamu události ETW pomocí NetDataContractSerializer třídy. Tato třída obsahuje informace o CLR typy v serializovaném XML proud.
Zkrácení uživatelských dat kvůli omezením ETW může vést k tomu, že se do relace ETW odesílají duplicitní sledovací záznamy. K tomu může dojít, pokud více než jedna relace naslouchá událostem a relace mají pro události různé limity datové části.
Událost může být u relace s nižším limitem zkrácena. Účastník sledování ETW nemá žádné informace o počtu relací, které naslouchají událostem. Pokud je událost pro relaci zkrácena, účastník zkusí znovu odeslat událost jednou. V takovém případě relace nakonfigurovaná tak, aby přijímala větší velikost datové části, získá událost dvakrát – jednou jako nezkrácenou událost a podruhé jako zkrácenou událost. Duplikaci je možné zabránit konfigurací všech relací ETW (Trasování událostí pro Windows) se stejnými limity velikosti vyrovnávací paměti.
Přístup ke sledovacím datům účastníka ETW v Prohlížeči událostí
Události zapsané do relace ETW (Evropské trasování událostí pro Windows) účastníkem sledování ETW můžou být přístupné prostřednictvím Prohlížeče událostí (při použití výchozího ID zprostředkovatele). To umožňuje rychle zobrazit sledovací záznamy, které pracovní postup vygeneroval.
Poznámka:
Monitorování událostí záznamů vydávaných v relaci ETW používá ID událostí v rozmezí od 100 do 199.
Povolení zobrazení záznamů sledování v Prohlížeči událostí
Spuštění Prohlížeče událostí (EVENTVWR.EXE)
Vyberte Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows, Aplikační serverové aplikace.
Klikněte pravým tlačítkem myši a ujistěte se, že je vybráno Zobrazení, Zobrazit analytické protokoly a protokoly ladění. Pokud ne, vyberte ho, aby se vedle něj zobrazila značka zaškrtnutí. Zobrazí se protokoly analýzy, výkonu a ladění .
Klikněte pravým tlačítkem na analytický protokol a pak vyberte Povolit protokol. Protokol bude existovat v souboru %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-Application Server-Applications%4Analytic.etl.
Vlastní účastník sledování
Rozhraní API pro sledování umožňuje rozšíření modulu runtime sledování s uživatelem poskytnutým účastníkem sledování, který může obsahovat vlastní logiku pro zpracování sledování záznamů vygenerovaných modulem runtime pracovního postupu. K napsání vlastního účastníka sledování musí vývojář implementovat metodu Track ve třídě TrackingParticipant. Tato metoda se volá, když modul runtime pracovního postupu vygeneruje záznam sledování.
Sledování účastníků je odvozeno od TrackingParticipant třídy. Systémem poskytnutý EtwTrackingParticipant generuje událost ETW (Sledování událostí pro Windows) pro každý přijatý záznam sledování. Chcete-li vytvořit vlastní instanci účastníka sledování, vytvoří se třída, která je odvozena z TrackingParticipant. Chcete-li poskytnout základní funkcionalitu sledování, přepište Track. Track je volán při odeslání záznamu sledování běhovým prostředím a lze jej zpracovat požadovaným způsobem. V následujícím příkladu je definována vlastní třída účastníka sledování, která generuje všechny záznamy sledování do okna konzoly. Můžete také implementovat TrackingParticipant objekt, který zpracovává záznamy sledování asynchronně pomocí jeho metod BeginTrack a EndTrack.
class ConsoleTrackingParticipant : TrackingParticipant
{
protected override void Track(TrackingRecord record, TimeSpan timeout)
{
if (record != null)
{
Console.WriteLine("=================================");
Console.WriteLine(record);
}
}
}
Pokud chcete použít konkrétního účastníka sledování, zaregistrujte ho v instanci pracovního postupu, kterou chcete sledovat, jak je znázorněno v následujícím příkladu.
myInstance.Extensions.Add(new ConsoleTrackingParticipant());
V následujícím příkladu se vytvoří pracovní postup, který se skládá z Sequence aktivity, která obsahuje WriteLine aktivitu.
ConsoleTrackingParticipant se přidá do rozšiřujících modulů a pracovní postup je spuštěn.
Activity activity= new Sequence()
{
Activities =
{
new WriteLine()
{
Text = "Hello World."
}
}
};
WorkflowApplication instance = new WorkflowApplication(activity);
instance.Extensions.Add(new ConsoleTrackingParticipant());
instance.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
Console.WriteLine("workflow instance completed, Id = " + instance.Id);
resetEvent.Set();
};
instance.Run();
Console.ReadLine();