Informationen zu „TraceLogging“
TraceLogging ist ein System zum Protokollieren von Ereignissen, das ohne Manifest decodiert werden kann. Unter Windows wird TraceLogging sowohl in Komponenten im Benutzermodus als auch im Kernelmodus verwendet, um ETW-Ereignisse (Event Tracing for Windows) zu generieren. TraceLogging baut auf der Ereignisablaufverfolgung für Windows (ETW) auf und bietet eine vereinfachte Möglichkeit zum Instrumentieren von Code.
Die Ereignisablaufverfolgung für Windows (ETW) wurde mit Windows 2000 eingeführt und in Windows Vista aktualisiert. TraceLogging baut auf den Windows Vista ETW-APIs auf. Anbieter können TraceLogging verwenden, wenn sie unter Windows Vista oder höher ausgeführt werden. Vorhandene ETW-Ablaufverfolgungscontroller können verwendet werden, um TraceLogging-Anbieter zu steuern und Ablaufverfolgungen mithilfe von Windows Vista-APIs zu erfassen. Vorhandene ETW-Ablaufverfolgungsdecoder, die TDH-Decodierungs-APIs verwenden, können TraceLogging-Ereignisse decodieren, wenn sie unter Windows 10 oder höher ausgeführt werden.
TraceLogging bietet mehrere Vorteile:
- Einfaches Definieren von Ereignissen direkt im Code, ähnlich wie WPP, ohne dass ein Vorverarbeitungstool erforderlich ist.
- Strukturierte Daten: benannte Felder mit Typen, Unterstützung für Arrays und Strukturen.
- Ereigniskorrelation durch ETW-Aktivitäten.
- Alle Decodierungsinformationen für das Ereignis sind im Ereignis selbst enthalten, sodass keine zusätzlichen Dateien zum Decodieren erforderlich sind.
- TraceLogging-Ereignisanbieter-APIs sind für C/C++, .NET und Windows-Runtime (WinRT) verfügbar. Externe Unterstützung für Python, Rust usw. verfügbar.
Während TraceLogging mehrere Vorteile bietet und für die neue Ablaufverfolgung in Betracht gezogen werden sollte, ist manifestbasierte ETW weiterhin für viele Szenarien geeignet.
- Wenn Ihre Ereignisse auf eines der älteren Windows-Protokolle im Windows-Ereignisprotokoll abzielen (z. B. die System- oder Anwendungsprotokolle), verwenden Sie weiterhin manifestbasierte ETW.
- Wenn die Größe der Ablaufverfolgungsdatei ein wichtiger Aspekt ist, verwenden Sie weiterhin manifestbasierte ETW. TraceLogging-Ereignisse enthalten die Ereigniszeichenfolgen (Anbietername, Ereignisname und Feldnamen) innerhalb jedes Ereignisses und sind in der Regel größer als das entsprechende manifestbasierte Ereignis.
- Wenn Sie eine große Investition in eine vorhandene Ablaufverfolgungstechnologie haben, ist es nicht erforderlich, auf TraceLogging zu wechseln.
- Andernfalls sollten Sie die Verwendung von TraceLogging in Betracht ziehen, da es eine einfachere Benutzeroberfläche für entwickler und den Ereignisconsumer bietet.
Allgemeine API-Übersicht
Es gibt mehrere TraceLogging-APIs, die jeweils auf unterschiedliche Entwicklergruppen ausgerichtet sind.
- Wenn Sie Ereignisse aus C- oder C++-Code generieren müssen, bietet TraceLoggingProvider.h eine effiziente API zum Generieren von TraceLogging-Ereignissen aus Benutzermodus- oder Kernelmoduscode. Die Ereignisse müssen zur Kompilierzeit definiert werden.
- Wenn Sie andernfalls Ereignisse aus .NET-Code generieren müssen, unterstützt die .NET EventSource-Klasse das Generieren von manifestbasierten und TraceLogging-basierten ETW-Ereignissen. Die Ereignisse müssen zur Kompilierzeit definiert werden.
- Andernfalls wurde LoggingChannel bei Verwendung des Windows-Runtime (WinRT) in Windows 10 erweitert, um TraceLogging-Ereignisse zu protokollieren.
- Andernfalls können Sie möglicherweise eine von der Community unterstützte Option wie TraceLoggingDynamic verwenden.