Sdílet prostřednictvím


Účastníci sledování

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 účastníka sledování, který zapisuje záznamy sledování jako události trasování událostí pro Windows (ETW). Je-li který nesplňuje vaše požadavky, můžete také napsat vlastní sledování účastník.

Účastníci sledování

Sledovací infrastruktura umožňuje aplikaci filtru odchozích záznamů sledování tak, aby se účastník mohl přihlásit k odběru podmnožině 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 sledování, který zapisuje záznamy sledování do relace Trasování událostí pro Windows. Účastník není konfigurována služba pracovního postupu přidáním specifické pro sledování chování v konfiguračním souboru. Povolení ETW umožňuje sledování účastník sledování záznamů, které mají být zobrazeny v události prohlížeč. Ukázka sady SDK pro sledování na základě Trasování událostí pro Windows je dobrým způsobem, jak se seznámit se sledováním WF pomocí účastníka sledování založeného na trasování pro Windows.

Účastník sledování Trasování událostí pro Windows

Rozhraní .NET Framework 4.6.1 obsahuje účastníka sledování trasování událostí pro Windows, který zapisuje záznamy sledování do relace Trasování událostí pro Windows. 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í trasování událostí pro Windows je, že záznamy sledování, které přijímá, je možné zobrazit v ostatních aplikacích a systémových protokolech v systému Windows Prohlížeč událostí.

Standardní účastník sledování událostí pro Windows je nakonfigurován 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 pouze <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.

V souboru Machine.config se výchozí profil sledování přihlásí k odběru záznamů a chyb instancí pracovního postupu.

Ve službě EtW se události zapisují do relace Trasování událostí pro Windows prostřednictvím ID zprostředkovatele. ID zprostředkovatele, které účastník sledování trasování událostí pro Windows používá k zápisu 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í Trasování událostí pro Windows výchozí ID zprostředkovatele, pokud ho nebylo 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í obrázek znázorňuje tok sledovacích dat prostřednictvím účastníka sledování Trasování událostí pro Windows. Jakmile data sledování dosáhnou relace trasování událostí pro Windows, můžete k ní 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ým nástrojem pro Windows používaným k zobrazení protokolů a trasování z aplikací a služeb.

Flow of tracking data through the ETW tracking provider.

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 jedné události na záznam sledování. 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 Trasování událostí pro Windows je omezená velikostí vyrovnávací paměti pro Windows nebo maximální datovou částí události ETW, podle toho, která hodnota je menší. Pokud velikost události překročí některou z těchto omezení Trasování událostí pro Windows, událost se zkrátí a její obsah se odebere libovolným způsobem. 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 překročení limitu událostí pro Windows. 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-type v serializované XML páry.

Zkrácení dat datové části kvůli omezením trasování událostí pro Windows může vést k tomu, že se do relace tras trasování událostí pro Windows odesílají duplicitní záznamy sledování. K tomu může dojít v případě, že události naslouchá více relacím a relace mají pro události jiné limity datové části.

U relace s nižším limitem může být událost zkrácena. Účastník sledování událostí pro Windows nemá žádné znalosti o počtu relací, které naslouchají událostem; pokud je událost zkrácena pro relaci, účastník trasování událostí pro Windows znovu odešle 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 (nezkrátená a zkrácená událost). Duplikaci je možné zabránit konfigurací všech relací Trasování událostí pro Windows se stejnými limity velikosti vyrovnávací paměti.

Přístup k datům sledování z účastníka Trasování událostí pro Windows v Prohlížeč událostí

K událostem, které jsou zapsány do relace Trasování událostí pro Windows účastníkem pro Windows, je možné získat přístup prostřednictvím Prohlížeč událostí (při použití výchozího ID zprostředkovatele). To umožňuje rychle zobrazit záznamy sledování, které pracovní postup vygeneroval.

Poznámka:

Sledování událostí záznamů vygenerovaných do relace Trasování událostí pro Windows používá ID událostí v rozsahu 100 až 199.

Povolení zobrazení záznamů sledování v Prohlížeč událostí

  1. Spuštění Prohlížeč událostí (EVENTVWR.EXE)

  2. Vyberte Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows, aplikační serverové aplikace.

  3. 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í.

  4. 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. Pokud chcete napsat vlastního účastníka sledování, musí vývojář implementovat Track metodu ve TrackingParticipant třídě. 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. Zadaný systém EtwTrackingParticipant generuje událost Sledování událostí pro Windows (ETW) pro každý přijatý záznam sledování. Chcete-li vytvořit vlastní sledování účastník, třída je vytvořena, která je odvozena z TrackingParticipant. Chcete-li poskytnout základní sledování funkce, přepište Track. Track je volána při odeslání záznamu sledování modulem runtime a lze je 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 BeginTrack a metod.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. Přidá se ConsoleTrackingParticipant do rozšíření a pracovní postup se vyvolá.

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();  

Viz také