Share via


Informazioni su TraceLogging

TraceLogging è un sistema per la registrazione di eventi che possono essere decodificati senza un manifesto. In Windows, TraceLogging viene usato sia nei componenti in modalità utente che in modalità kernel per generare eventi ETW (Event Tracing for Windows). TraceLogging si basa su Event Tracing for Windows (ETW) e offre un modo semplificato per instrumentare il codice.

Event Tracing for Windows (ETW) è stato introdotto con Windows 2000 e aggiornato in Windows Vista. TraceLogging si basa sulle API ETW di Windows Vista. I provider possono usare TraceLogging durante l'esecuzione in Windows Vista o versioni successive. I controller di traccia ETW esistenti possono essere usati per controllare i provider TraceLogging e acquisire tracce usando le API di Windows Vista. I decodificatori di traccia ETW esistenti che usano le API di decodifica TDH possono decodificare gli eventi TraceLogging durante l'esecuzione in Windows 10 o versione successiva.

TraceLogging offre diversi vantaggi:

  • Semplicità di definizione degli eventi direttamente nel codice, simile a WPP, ma senza la necessità di uno strumento di pre-elaborazione.
  • Dati strutturati: campi denominati con tipi, supporto per matrici e strutture.
  • Correlazione degli eventi tramite attività ETW.
  • Tutte le informazioni di decodifica per l'evento vengono incluse all'interno dell'evento stesso, quindi non sono necessari file aggiuntivi per decodificare.
  • Le API del provider di eventi TraceLogging sono disponibili per C/C++, .NET e Windows Runtime (WinRT). Supporto esterno disponibile per Python, Rust e così via.

Anche se TraceLogging offre diversi vantaggi e deve essere considerato per la nuova traccia, ETW basato su manifesto è ancora appropriato per molti scenari.

  • Se gli eventi hanno come destinazione uno dei log di Windows legacy nel registro eventi di Windows (ad esempio i log di sistema o applicazioni), continuare a usare ETW basato su manifesto.
  • Se le dimensioni del file di traccia sono importanti, continuare a usare ETW basato su manifesto. Gli eventi TraceLogging includono le stringhe di evento (nome del provider, nome evento e nomi di campo) all'interno di ogni evento e sono in genere maggiori dell'evento basato su manifesto equivalente.
  • Se si ha un grande investimento in una tecnologia di traccia esistente, non è necessario passare a TraceLogging.
  • In caso contrario, è consigliabile usare TraceLogging perché offre un'esperienza più semplice per lo sviluppatore e il consumer di eventi.

Panoramica generale dell'API

Sono disponibili più API TraceLogging, ognuna destinata a gruppi di destinatari per sviluppatori diversi.

  • Se è necessario generare eventi da codice C o C++, TraceLoggingProvider.h fornisce un'API efficiente per generare eventi TraceLogging da codice in modalità utente o in modalità kernel. Gli eventi devono essere definiti in fase di compilazione.
  • In caso contrario, se è necessario generare eventi dal codice .NET, la classe EventSource .NET supporta la generazione di eventi ETW basati su manifesto e TraceLogging. Gli eventi devono essere definiti in fase di compilazione.
  • In caso contrario, se si usa il Windows Runtime (WinRT), LoggingChannel è stato esteso in Windows 10 per registrare gli eventi TraceLogging.
  • In caso contrario, potrebbe essere possibile usare un'opzione supportata dalla community, ad esempio TraceLoggingDynamic.

Informazioni su Event Tracing