Acerca de TraceLogging

TraceLogging es un sistema para registrar eventos que se pueden descodificar sin un manifiesto. En Windows, TraceLogging se usa tanto en el modo de usuario como en los componentes en modo kernel para generar eventos de seguimiento de eventos para Windows (ETW). TraceLogging se basa en seguimiento de eventos para Windows (ETW) y proporciona una manera simplificada de instrumentar el código.

El seguimiento de eventos para Windows (ETW) se introdujo con Windows 2000 y se actualizó en Windows Vista. TraceLogging se basa en las API ETW de Windows Vista. Los proveedores pueden usar TraceLogging cuando se ejecutan en Windows Vista o versiones posteriores. Los controladores de seguimiento ETW existentes se pueden usar para controlar los proveedores de seguimiento y capturar seguimientos mediante las API de Windows Vista. Los descodificadores de seguimiento ETW existentes que usan las API de descodificación de TDH pueden descodificar eventos traceLogging cuando se ejecutan en Windows 10 o posterior.

TraceLogging ofrece varias ventajas:

  • Simplicidad de definir eventos directamente en el código, similares a WPP, pero sin necesidad de una herramienta de preprocesamiento.
  • Datos estructurados: campos con nombre con tipos, compatibilidad con matrices y estructuras.
  • Correlación de eventos a través de actividades ETW.
  • Toda la información de descodificación del evento se incluye dentro del propio evento, por lo que no se necesitan archivos adicionales para descodificar.
  • Las API del proveedor de eventos traceLogging están disponibles para C/C++, .NET y Windows Runtime (WinRT). Compatibilidad externa disponible para Python, Rust, etc.

Aunque TraceLogging proporciona varias ventajas y debe tenerse en cuenta para el nuevo seguimiento, ETW basado en manifiesto sigue siendo adecuado para muchos escenarios.

  • Si los eventos tienen como destino uno de los registros heredados de Windows en el registro de eventos de Windows (por ejemplo, los registros del sistema o de la aplicación), siga usando ETW basado en manifiestos.
  • Si el tamaño del archivo de seguimiento es una consideración importante, siga usando ETW basado en manifiesto. Los eventos traceLogging incluyen las cadenas de eventos (nombre del proveedor, nombre de evento y nombres de campo) dentro de cada evento y suelen ser mayores que el evento basado en manifiesto equivalente.
  • Si tiene una gran inversión en una tecnología de seguimiento existente, no es necesario cambiar a TraceLogging.
  • De lo contrario, considere la posibilidad de usar TraceLogging, ya que ofrece una experiencia más sencilla para el desarrollador y el consumidor de eventos.

Información general sobre la API de alto nivel

Hay varias API de registro de seguimiento, cada una dirigida a diferentes audiencias de desarrolladores.

  • Si necesita generar eventos a partir de código de C o C++, TraceLoggingProvider.h proporciona una API eficaz para generar eventos traceLogging desde el código en modo de usuario o en modo kernel. Los eventos se deben definir en tiempo de compilación.
  • De lo contrario, si necesita generar eventos a partir de código .NET, la clase EventSource de .NET admite la generación de eventos ETW basados en manifiestos y basados en tracelogging. Los eventos se deben definir en tiempo de compilación.
  • De lo contrario, si usa el Windows Runtime (WinRT), LoggingChannel se ha ampliado en Windows 10 para registrar eventos de tracelogging.
  • De lo contrario, es posible que pueda usar una opción compatible con la comunidad, como TraceLoggingDynamic.

Acerca del seguimiento de eventos