Konfigurace trasování
Toto téma popisuje, jak povolit trasování, nakonfigurovat zdroje trasování pro generování trasování a nastavit úrovně trasování, nastavit trasování aktivit a šíření pro podporu kompletní korelace trasování a nastavit naslouchací procesy trasování pro přístup k trasování.
Doporučení k nastavení trasování v produkčním nebo ladicím prostředí najdete v doporučených Nastavení 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áva istrator), 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í.
Trasování WCF je postaveno 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 nejobecnější zdroj trasování WCF a milníky zpracování záznamů v rámci komunikačního zásobníku WCF, od zadávání nebo opuštění přenosu po zadání nebo 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 naslouchací proces trasování a nastavit jinou úroveň trasování než "Vypnuto" pro vybraný zdroj trasování v konfiguraci; v opačném případě WCF negeneruje žádné trasování. Pokud nezadáte naslouchací proces, trasování se automaticky zakáže. Pokud je definován naslouchací proces, ale není zadána žádná úroveň, je tato úroveň ve výchozím nastavení nastavená 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 ručního trasování generováním trasování, nemusí se zobrazit očekávané trasování.
Trasování můžete nakonfigurovat úpravou konfiguračního souboru aplikace – web.config pro aplikace hostované na webu 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 naslouchacích procesů trasování pro využívání trasování.
<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 myši na konfigurační soubor aplikace – web.config pro aplikace hostované na webu nebo Appname.exe.config pro aplikaci v místním prostředí v Průzkumník ř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 zdrojů trasování pro generování trasování
WCF definuje zdroj trasová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 trasová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í rozhraní rozhraní .NET Framework do systému souborů CLFS (Common Log File System).
System.Runtime.Serialization: Protokoly při čtení nebo zápisu objektů.
Cardspace.
Každý zdroj trasování můžete nakonfigurovat tak, aby používal stejný (sdílený) naslouchací proces, 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, k generová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ů trasování pro využívání trasování
V době běhu wcf odesílá trasovací data do naslouchacích procesů, které zpracovávají data. WCF poskytuje několik předdefinovaných naslouchacích procesů System.Diagnostics, které se liší ve formátu, který používají pro výstup. Můžete také přidat vlastní typy naslouchacího procesu.
Můžete použít add
Chcete-li určit název a typ naslouchací proces trasování, kterou chcete použít. V naší ukázkové konfiguraci jsme pojmenovali naslouchací proces traceListener
a jako typ, který chcete použít, jsme přidali standardní naslouchací proces trasování rozhraní .NET Framework (System.Diagnostics.XmlWriterTraceListener
). Pro každý zdroj můžete přidat libovolný počet naslouchacích procesů 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 tento naslouchací proces. 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í naslouchací proces trasování tak, aby odesílal trasování na drátu, například do vzdálené databáze. Jako nasazovač aplikace byste měli vynutit správné řízení přístupu na protokolech trasování na vzdáleném počítači.
Naslouchací proces 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 traceListener.
Upozornění
Vzhledem k tomu System.Diagnostics.XmlWriterTraceListener
, že zdroj trasování není bezpečný pro přístup z více vláken, může při výstupu trasování uzamknout prostředky výhradně. Pokud mnoho vláken výstupní trasování do zdroje trasování nakonfigurovaného pro použití tohoto naslouchacího procesu, může dojít k kolizí prostředků, což vede k významnému problému s výkonem. Pokud chcete tento problém vyřešit, měli byste implementovat vlastní naslouchací proces, který je bezpečný pro přístup z více vláken.
Ú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 |
---|---|---|---|---|
Vypnout | – | N/A | Nevygenerují se žádné trasování. | – |
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 se selháním - 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í |
Upozorňující | 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ě. Nemusí ale fungovat správně. | – Aplikace přijímá více požadavků, než je povolené nastavení omezování. – 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í |
Informační | 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í procesy koncového bodu. - Zpráva zadá nebo opustí dopravu. – Načte se token zabezpečení. – Nastavení konfigurace je přečteno. |
Správci Vývojáři aplikací Vývojáři produktů. |
Podrobnosti | 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ů. |
ActivityTracing | 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řenosy. |
Vše | |
Vše | Aplikace může fungovat správně. Všechny události se vygenerují. | Všechny předchozí události. | Vše |
Ú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 naslouchací proces na úrovni upozornění obdrží trasování Kritické, Chybové a Upozornění. Úroveň Vše zahrnuje události z podrobného na kritické události a trasování aktivit.
Upozornění
Úrovně Information, Verbose a ActivityTracing generují velké množství trasování, což může negativně ovlivnit propustnost zpráv, pokud jste na počítači použili všechny dostupné prostředky.
Konfigurace trasování aktivit a šíření pro korelaci
Hodnota activityTracing
zadaná pro switchValue
atribut se používá k povolení trasování aktivit, které generuje trasování pro hranice aktivit a přenosy v rámci koncových bodů.
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 true
můž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ů.
Atribut nelze použít 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
.