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.