Delen via


Over TraceLogging

TraceLogging is een systeem voor logboekregistratiegebeurtenissen die zonder manifest kunnen worden gedecodeerd. In Windows wordt TraceLogging in zowel gebruikersmodus- als kernelmodusonderdelen gebruikt om Gebeurtenistracering voor Windows (ETW)-gebeurtenissen te genereren. TraceLogging bouwt voort op Event Tracing voor Windows (ETW) en biedt een vereenvoudigde manier om code te instrumenteren.

Event Tracing voor Windows (ETW) is geïntroduceerd met Windows 2000 en bijgewerkt in Windows Vista. TraceLogging bouwt voort op de WINDOWS Vista ETW API's. Providers kunnen TraceLogging gebruiken bij uitvoering op Windows Vista of hoger. Bestaande ETW-traceercontrollers kunnen worden gebruikt om TraceLogging-providers te beheren en traceringen vast te leggen met behulp van Windows Vista-API's. Bestaande ETW-traceer decoders die gebruikmaken van TDH-decoderings-API's kunnen TraceLogging-gebeurtenissen decoderen wanneer ze worden uitgevoerd in Windows 10 of hoger.

TraceLogging biedt verschillende voordelen:

  • Eenvoud van het rechtstreeks definiëren van gebeurtenissen in code, vergelijkbaar met WPP, maar zonder dat er een voorverwerkingsprogramma nodig is.
  • Gestructureerde gegevens: benoemde velden met typen, ondersteuning voor matrices en structuren.
  • Gebeurteniscorrelatie via ETW-activiteiten.
  • Alle decoderingsgegevens voor de gebeurtenis worden opgenomen in de gebeurtenis zelf, zodat er geen extra bestanden nodig zijn om te decoderen.
  • TraceLogging-gebeurtenisprovider-API's zijn beschikbaar voor C/C++-, .NET-en WinRT-(Windows Runtime). Externe ondersteuning die beschikbaar is voor Python-, Rust, enzovoort.

TraceLogging biedt verschillende voordelen en moet worden overwogen voor nieuwe tracering, maar ETW op basis van manifesten is nog steeds geschikt voor veel scenario's.

  • Als uw gebeurtenissen gericht zijn op een van de verouderde Windows-logboeken in het Windows-gebeurtenislogboek (bijvoorbeeld de systeem- of toepassingslogboeken), kunt u etw op basis van manifesten blijven gebruiken.
  • Als traceringsbestandsgrootte een belangrijke overweging is, kunt u etw op basis van manifesten blijven gebruiken. TraceLogging-gebeurtenissen omvatten de gebeurtenisreeksen (providernaam, gebeurtenisnaam en veldnamen) binnen elke gebeurtenis en zijn meestal groter dan de equivalente manifestgebeurtenis.
  • Als u een grote investering hebt in een bestaande traceringstechnologie, hoeft u niet over te schakelen naar TraceLogging.
  • Anders kunt u TraceLogging gebruiken omdat het een eenvoudigere ervaring biedt voor de ontwikkelaar en de gebeurtenisconsumer.

Overzicht van API op hoog niveau

Er zijn meerdere TraceLogging-API's die elk gericht zijn op verschillende doelgroepen voor ontwikkelaars.

  • Als u gebeurtenissen wilt genereren op basis van C- of C++-code, biedt TraceLoggingProvider.h een efficiënte API voor het genereren van TraceLogging-gebeurtenissen uit de gebruikersmodus of kernelmoduscode. De gebeurtenissen moeten tijdens het compileren worden gedefinieerd.
  • Als u anders gebeurtenissen wilt genereren op basis van .NET-code, ondersteunt de .NET-EventSource klasse het genereren van ETW-gebeurtenissen op basis van manifesten en TraceLogging. De gebeurtenissen moeten tijdens het compileren worden gedefinieerd.
  • Als u de Windows Runtime (WinRT) gebruikt, is LoggingChannel in Windows 10 uitgebreid om TraceLogging-gebeurtenissen vast te leggen.
  • Anders kunt u mogelijk een door de community ondersteunde optie gebruiken, zoals TraceLoggingDynamic.

over gebeurtenistracering