Partilhar via


Sobre o TraceLogging

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

O Rastreamento de Eventos para Windows (ETW) foi introduzido com o Windows 2000 e atualizado no Windows Vista. O TraceLogging baseia-se nas APIs ETW do Windows Vista. Os fornecedores podem usar o TraceLogging quando estiverem a correr no Windows Vista ou versões posteriores. 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 TDH podem decodificar eventos TraceLogging quando executados no 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 através de atividades ETW .
  • Todas as informações de decodificação para o evento são incluídas dentro do próprio evento, portanto, não são necessários arquivos adicionais para decodificar.
  • As APIs do provedor de eventos TraceLogging estão disponíveis para C/C++, .NETe do Runtime do Windows (WinRT). Suporte externo disponível para Python, Rust, etc.

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

  • Se os seus eventos tiverem como destino um dos Registos do Windows herdados no Registo de Eventos do Windows (por exemplo, os registos do Sistema ou da Aplicação), 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 há necessidade de mudar para o TraceLogging.
  • Caso contrário, considere usar o 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

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

  • Se você precisar gerar eventos a partir de código C ou C++, TraceLoggingProvider.h fornece uma API eficiente para gerar eventos TraceLogging a partir do código de modo de usuário ou de modo kernel. Os eventos devem ser definidos em tempo de compilação.
  • Caso contrário, se você precisar gerar eventos a partir do código .NET, a classe de.NETEventSource oferece suporte à geração de eventos ETW baseados em manifesto e baseados em TraceLogging. Os eventos devem ser definidos em tempo de compilação.
  • Caso contrário, se estiveres a usar o Tempo de Execução do Windows (WinRT), LoggingChannel foi estendido no Windows 10 para registar eventos TraceLogging.
  • Caso contrário, você poderá usar uma opção suportada pela comunidade, como TraceLoggingDynamic.

Sobre o rastreio de eventos