Informações sobre o TraceLogging

TraceLogging é um sistema para registrar eventos em log que podem ser decodificados sem um manifesto. No Windows, TraceLogging é usado em componentes do modo de usuário e do modo kernel para gerar eventos de ETW (Rastreamento de Eventos para Windows ). O TraceLogging se baseia no ETW (Rastreamento de Eventos para Windows) e fornece uma maneira simplificada de instrumentar o código.

O ETW (Rastreamento de Eventos para Windows) foi introduzido com o Windows 2000 e atualizado no Windows Vista. O TraceLogging se baseia nas APIs ETW do Windows Vista. Os provedores podem usar TraceLogging durante a execução no Windows Vista ou posterior. Os controladores de rastreamento ETW existentes podem ser usados para controlar provedores traceLogging e capturar rastreamentos usando APIs do Windows Vista. Os decodificadores de rastreamento ETW existentes que usam APIs de decodificação de TDH podem decodificar eventos traceLogging durante a execução em Windows 10 ou posterior.

O TraceLogging oferece vários benefícios:

  • Simplicidade de definir eventos diretamente no código, semelhante ao WPP, mas sem a necessidade de uma ferramenta de pré-processamento.
  • Dados estruturados: campos nomeados com tipos, suporte para matrizes e estruturas.
  • Correlação de eventos por meio de atividades ETW.
  • Todas as informações de decodificação do evento são incluídas no próprio evento, portanto, nenhum arquivo adicional necessário para decodificar.
  • As APIs do provedor de eventos TraceLogging estão disponíveis para C/C++, .NET e winRT (Windows Runtime). Suporte externo disponível para Python, Rust etc.

Embora o TraceLogging forneça vários benefícios e deva ser considerado para o novo rastreamento, o ETW baseado em manifesto ainda é apropriado para muitos cenários.

  • Se os eventos estiverem direcionando um dos logs herdados do Windows no Log de Eventos do Windows (por exemplo, os logs do Sistema ou do Aplicativo), continue a usar o ETW baseado em manifesto.
  • Se o tamanho do arquivo de rastreamento for uma consideração importante, continue a usar o ETW baseado em manifesto. Os eventos TraceLogging incluem as cadeias de caracteres de evento (nome do provedor, nome do evento e nomes de campo) dentro de cada evento e geralmente são maiores do que o evento baseado em manifesto equivalente.
  • Se você tiver um grande investimento em uma tecnologia de rastreamento existente, não haverá necessidade de mudar para TraceLogging.
  • Caso contrário, considere usar TraceLogging, pois ele oferece uma experiência mais simples para o desenvolvedor e o consumidor do evento.

Visão geral de alto nível da API

Há várias APIs de TraceLogging, cada uma direcionada a diferentes públicos de desenvolvedores.

  • Se você precisar gerar eventos do código C ou C++, TraceLoggingProvider.h fornecerá uma API eficiente para gerar eventos traceLogging do modo de usuário ou do código do modo kernel. Os eventos devem ser definidos em tempo de compilação.
  • Caso contrário, se você precisar gerar eventos do código .NET, a classe EventSource do .NET oferecerá suporte à geração de eventos ETW baseados em manifesto e traceLogging. Os eventos devem ser definidos em tempo de compilação.
  • Caso contrário, se você estiver usando o Windows Runtime (WinRT), o LoggingChannel foi estendido em Windows 10 para registrar eventos traceLogging.
  • Caso contrário, você poderá usar uma opção com suporte da comunidade, como TraceLoggingDynamic.

Sobre o Rastreamento de Eventos