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.
Toto téma popisuje, jak povolit trasování, nakonfigurovat zdroje trasování pro generování záznamů a nastavit úrovně trasování, jak nastavit trasování aktivit a propagaci pro podporu end-to-end korelace trasování a jak nastavit posluchače trasování pro přístup k záznamům.
Doporučení k nastavení trasování v produkčním nebo ladicím prostředí najdete v doporučených nastaveních pro trasování a protokolování zpráv.
Důležité
Ve Windows 8 musíte spustit aplikaci se zvýšenými oprávněními (Spustit jako správce), aby vaše aplikace mohla generovat protokoly trasování.
Povolení trasování
Windows Communication Foundation (WCF) vypíše následující data pro diagnostické trasování:
Trasování milníků procesů ve všech komponentách aplikací, jako jsou volání operací, výjimky kódu, upozornění a další významné události zpracování.
Události chyb systému Windows při selhání funkce trasování Viz Protokolování událostí.
WCF trasování je založeno na System.Diagnostics. Pokud chcete použít trasování, měli byste definovat zdroje trasování v konfiguračním souboru nebo v kódu. WCF definuje zdroj trasování pro každé sestavení WCF. Zdrojem System.ServiceModel trasování je obecný zdroj trasování WCF a zaznamenává procesní milníky v rámci komunikačního zásobníku WCF, od vstupu do/opuštění přenosu až po vstup do/opuštění uživatelského kódu. Zdroj System.ServiceModel.MessageLogging trasování zaznamenává všechny zprávy, které procházejí systémem.
Trasování není ve výchozím nastavení povolené. Chcete-li aktivovat trasování, musíte vytvořit posluchač sledování a nastavit jinou úroveň sledování než "Vypnuto" pro vybraný zdroj sledování v konfiguraci; v opačném případě WCF negeneruje žádné sledování. Pokud nezadáte posluchače, trasování se automaticky zakáže. Pokud je definován posluchač, ale není specifikována žádná úroveň, je úroveň automaticky nastavena na Vypnuto, což znamená, že se nevygeneruje žádné trasování.
Pokud používáte body rozšiřitelnosti WCF, jako jsou například vyvolání vlastních operací, měli byste vygenerovat vlastní trasování. Důvodem je to, že pokud implementujete bod rozšiřitelnosti, wcf již nemůže generovat standardní trasování ve výchozí cestě. Pokud neimplementujete podporu manuálního trasování vysíláním tras, nemusí se zobrazit očekávané trasování.
Trasování můžete nakonfigurovat úpravou konfiguračního souboru aplikace – buď Web.config pro aplikace hostované webem, nebo Appname.exe.config pro aplikace v místním prostředí. Následuje příklad takové úpravy. Další informace o těchto nastaveních najdete v části „Konfigurace nástrojů pro zachycování tras“.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Poznámka:
Chcete-li upravit konfigurační soubor projektu služby WCF v sadě Visual Studio, klikněte pravým tlačítkem na konfigurační soubor aplikace – buď Web.config pro aplikace hostované na webu, nebo Appname.exe.config pro aplikaci v Průzkumníku řešení. Potom zvolte položku místní nabídky Upravit konfiguraci WCF . Tím se spustí nástroj Editor konfigurace (SvcConfigEditor.exe), který umožňuje upravit nastavení konfigurace pro služby WCF pomocí grafického uživatelského rozhraní.
Konfigurace trasovacích zdrojů pro vytváření stop
WCF definuje zdroj sledování pro každé sestavení. Trasování vygenerovaná v rámci sestavení jsou přístupná naslouchacími procesy definovanými pro tento zdroj. Jsou definovány následující zdroje sledování:
System.ServiceModel: Zaznamená všechny fáze zpracování WCF, kdykoli se konfigurace přečte, zpráva se zpracuje v přenosu, zpracování zabezpečení, zpráva se odešle v uživatelském kódu atd.
System.ServiceModel.MessageLogging: Zaznamená všechny zprávy, které procházejí systémem.
System.IdentityModel.
System.ServiceModel.Activation.
System.IO.Log: Protokolování pro rozhraní .NET Framework do systému souborů CLFS (Common Log File System).
System.Runtime.Serialization: Zaznamenává čtení nebo zápis objektů.
CardSpace.
Každý zdroj trasování můžete nakonfigurovat tak, aby používal stejný (sdílený) naslouchací objekt, jak je uvedeno v následujícím příkladu konfigurace.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
Kromě toho můžete přidat uživatelem definované zdroje trasování, jak je znázorněno v následujícím příkladu, pro vyvolání trasování uživatelského kódu.
<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
Další informace o vytváření uživatelem definovaných zdrojů trasování naleznete v tématu Rozšíření trasování.
Konfigurace naslouchacích procesů pro přijímání trasovacích záznamů
Za běhu WCF odesílá trasovací data do naslouchacích modulů, které data zpracovávají. WCF poskytuje několik předdefinovaných posluchačů System.Diagnostics, které se liší podle formátu, který používají pro výstup. Můžete také přidat vlastní typy posluchačů.
Můžete použít add k zadání názvu a typu naslouchacího prvku trasování. V naší ukázkové konfiguraci jsme pojmenovali listener traceListener a jako typ, který chceme použít, jsme přidali standardní trasovací listener rozhraní .NET Framework (System.Diagnostics.XmlWriterTraceListener). Pro každý zdroj můžete přidat libovolný počet posluchačů trasování. Pokud naslouchací proces trasování vygeneruje trasování do souboru, musíte zadat umístění a název výstupního souboru v konfiguračním souboru. To se provádí nastavením initializeData na název souboru pro tohoto posluchače. Pokud nezadáte název souboru, vygeneruje se náhodný název souboru na základě použitého typu naslouchacího procesu. Pokud XmlWriterTraceListener se použije, vygeneruje se název souboru bez přípony. Pokud implementujete vlastní naslouchací proces, můžete tento atribut použít také k příjmu inicializačních dat kromě názvu souboru. Můžete například zadat identifikátor databáze pro tento atribut.
Můžete nakonfigurovat vlastní posluchač trasování tak, aby odesílal výstupy prostřednictvím sítě, například do vzdálené databáze. Jako osoba zodpovědná za nasazení aplikace byste měli vynutit správné řízení přístupu na záznamech trasování na vzdáleném stroji.
Naslouchací objekt trasování můžete také nakonfigurovat programově. Další informace naleznete v tématu Postupy: Vytvoření a inicializace naslouchacích procesů trasování a Vytvoření vlastního naslouchacího procesu trasování.
Upozornění
Protože System.Diagnostics.XmlWriterTraceListener není bezpečný pro přístup z více vláken, trasovací zdroj může při výstupu trasování exkluzivně uzamknout prostředky. Pokud mnoho vláken vypisují trasování do zdroje trasování, který je nakonfigurován k použití tohoto naslouchátka, může dojít ke konfliktu zdrojů, což vede k významnému problému s výkonem. Pokud chcete tento problém vyřešit, měli byste implementovat vlastní posluchač, který je bezpečný pro vlákna.
Úroveň trasování
Úroveň trasování se řídí switchValue nastavením zdroje trasování. Dostupné úrovně trasování jsou popsány v následující tabulce.
| Úroveň trasování | Povaha sledovaných událostí | Obsah sledovaných událostí | Sledované události | Cíl uživatele |
|---|---|---|---|---|
| Vypnuto | není k dispozici | není k dispozici | Nevydávají se žádné stopy. | není k dispozici |
| Kritický | Záporné události: události označující neočekávané zpracování nebo chybový stav. | Zaprotokolují se neošetřené výjimky, včetně následujících: - OutOfMemoryException – ThreadAbortException (CLR vyvolá jakýkoli ThreadAbortExceptionHandler) – StackOverflowException (nelze zachytit) – ConfigurationErrorsException - SEHException – Chyby spuštění aplikace – Události okamžitého selhání - Systém přestane reagovat - Otrávené zprávy: trasování zpráv, které způsobují selhání aplikace. |
Správci Vývojáři aplikací |
|
| Chyba | Záporné události: události označující neočekávané zpracování nebo chybový stav. | Došlo k neočekávanému zpracování. Aplikace nemohla provést úlohu podle očekávání. Aplikace je ale stále spuštěná. | Zaprotokolují se všechny výjimky. | Správci Vývojáři aplikací |
| Výstraha | Záporné události: události označující neočekávané zpracování nebo chybový stav. | K možnému problému došlo nebo může dojít, ale aplikace stále funguje správně. Ale nemusí fungovat správně. | – Aplikace přijímá více požadavků, než umožňují její nastavení omezování výkonu. – Přijímající fronta se blíží maximální nakonfigurované kapacitě. – Došlo k překročení časového limitu. – Přihlašovací údaje jsou odmítnuty. |
Správci Vývojáři aplikací |
| Informace | Pozitivní události: události, které označují úspěšné milníky | Důležité a úspěšné milníky provádění aplikace bez ohledu na to, jestli aplikace funguje správně nebo ne. | Obecně platí, že se generují zprávy užitečné pro monitorování a diagnostiku stavu systému, měření výkonu nebo profilace. Tyto informace můžete použít k plánování kapacity a správě výkonu: - Vytvoří se kanály. – Vytvoří se naslouchací služby koncového bodu. - Zpráva vstupuje do transportu nebo opouští transport. Token zabezpečení byl načten. – Nastavení konfigurace je přečteno. |
Správci Vývojáři aplikací Vývojáři produktů. |
| Zdlouhavý | Pozitivní události: události, které označují úspěšné milníky. | Události nízké úrovně pro uživatelský kód i údržbu se vygenerují. | Obecně platí, že tuto úroveň můžete použít k ladění nebo optimalizaci aplikace. - Srozumitelná hlavička zprávy. |
Správci Vývojáři aplikací Vývojáři produktů. |
| Sledování aktivity | Události toku mezi aktivitami zpracování a komponentami. | Tato úroveň umožňuje správcům a vývojářům korelovat aplikace ve stejné doméně aplikace: – Trasování hranic aktivit, jako je spuštění/zastavení. - Trasování pro převody. |
Všechno | |
| Všechno | Aplikace může fungovat správně. Všechny události jsou vysílány. | Všechny předchozí události. | Všechno |
Úrovně od Podrobné do Kritické jsou skládané na sebe navzájem, to znamená, že každá úroveň trasování zahrnuje všechny úrovně nad ní s výjimkou úrovně Off. Například posluchač na úrovni varování obdrží trasování Kritické, Chybové a Upozornění. Úroveň Vše zahrnuje události od Verbose po Critical, včetně trasování aktivit.
Upozornění
Úrovně Information, Verbose a ActivityTracing generují mnoho tras, což může negativně ovlivnit propustnost zpráv, pokud jsou všechny dostupné prostředky počítače vyčerpány.
Konfigurace trasování aktivit a šíření pro korelaci
Pro povolení trasování aktivit se hodnota activityTracing zadaná pro atribut switchValue používá k zaznamenání hranic aktivit a přenosů mezi koncovými body.
Poznámka:
Pokud ve WCF používáte určité funkce rozšiřitelnosti, může se zobrazit NullReferenceException , kdy je povolené trasování aktivit. Chcete-li tento problém vyřešit, zkontrolujte konfigurační soubor vaší aplikace a ujistěte se, že switchValue atribut pro váš zdroj trasování není nastaven na activityTracing.
Atribut propagateActivity označuje, jestli se má aktivita rozšířit do jiných koncových bodů, které se účastní výměny zpráv. Nastavením této hodnoty truemůžete vzít trasovací soubory vygenerované libovolnými dvěma koncovými body a sledovat, jak sada trasování v jednom koncovém bodu proudila do sady trasování v jiném koncovém bodu.
Další informace o trasování a šíření aktivit naleznete v tématu Šíření.
Pro System.ServiceModel TraceSource platí obě propagateActivity a ActivityTracing logické hodnoty. Tato ActivityTracing hodnota se vztahuje také na jakýkoli zdroj trasování, včetně WCF nebo uživatelem definovaných zdrojů.
Nelze použít atribut propagateActivity s uživatelem definovanými zdroji trasování. Pro šíření ID aktivity uživatelského kódu se ujistěte, že nenastavíte ServiceModel ActivityTracing, zatímco atribut ServiceModel propagateActivity je nastaven na true.