Om spårningsloggning
Spårningsloggning är ett system för loggningshändelser som kan avkodas utan manifest. I Windows används Spårningsloggning i både användarläge och kernellägeskomponenter för att generera händelsespårning för Windows (ETW) händelser. TraceLogging bygger på händelsespårning för Windows (ETW) och ger ett förenklat sätt att instrumentera kod.
Händelsespårning för Windows (ETW) introducerades med Windows 2000 och uppdaterades i Windows Vista. TraceLogging bygger på Windows Vista ETW API:er. Leverantörer kan använda TraceLogging när de används med Windows Vista eller senare. Befintliga ETW-spårningsstyrenheter kan användas för att styra spårningsloggningsproviders och samla in spårningar med hjälp av Windows Vista-API:er. Befintliga ETW-spårningsavkodare som använder API:er för TDH-avkodning kan avkoda spårningsloggningshändelser när de körs i Windows 10 eller senare.
Spårningsloggning har flera fördelar:
- Enkelhet i att definiera händelser direkt i kod, som liknar WPP men utan behov av ett förbearbetningsverktyg.
- Strukturerade data: namngivna fält med typer, stöd för matriser och strukturer.
- Händelsekorrelation via ETW-aktiviteter.
- All avkodningsinformation för händelsen ingår i själva händelsen, så inga ytterligare filer behövs för att avkoda.
- API:er för spårningsloggningshändelseleverantör är tillgängliga för C/C++, .NEToch Windows Runtime (WinRT). Externt stöd för Python, Rust osv.
Spårningsloggning ger flera fördelar och bör övervägas för ny spårning, men manifestbaserad ETW är fortfarande lämplig för många scenarier.
- Om dina händelser är riktade mot en av de äldre Windows-loggarna i Windows-händelseloggen (t.ex. system- eller programloggarna) fortsätter du att använda manifestbaserad ETW.
- Om spårningsfilens storlek är viktigt bör du fortsätta att använda manifestbaserad ETW. Spårningsloggningshändelser inkluderar händelsesträngarna (providernamn, händelsenamn och fältnamn) i varje händelse och är vanligtvis större än motsvarande manifestbaserade händelse.
- Om du har en stor investering i en befintlig spårningsteknik finns det inget krav på att växla till Spårningsloggning.
- Annars bör du överväga att använda TraceLogging eftersom det ger en enklare upplevelse för utvecklaren och händelsekonsumenten.
Översikt över API:et på hög nivå
Det finns flera API:er för spårningsloggning som var och en riktar sig till olika målgrupper för utvecklare.
- Om du behöver generera händelser från C- eller C++-kod tillhandahåller TraceLoggingProvider.h ett effektivt API för att generera Spårningsloggningshändelser från användarläge eller kernellägeskod. Händelserna måste definieras vid kompileringstid.
- Om du behöver generera händelser från .NET-kod stöder klassen .NET EventSource att generera både manifestbaserade och Spårningsloggningsbaserade ETW-händelser. Händelserna måste definieras vid kompileringstid.
- Annars, om du använder Windows Runtime (WinRT), har LoggingChannel utökats i Windows 10 för att logga spårningsloggningshändelser.
- Annars kanske du kan använda ett alternativ som stöds av communityn, till exempel TraceLoggingDynamic.