Поделиться через


Сведения о TraceLogging

TraceLogging — это система для ведения журнала событий, которые можно декодировать без манифеста. В Windows TraceLogging используется как в пользовательском режиме, так и в компонентах режима ядра для создания трассировки событий Windows (ETW). TraceLogging строится на трассировке событий для Windows (ETW) и предоставляет упрощенный способ инструментирования кода.

Трассировка событий для Windows (ETW) была введена в Windows 2000 и была обновлена в Windows Vista. TraceLogging строится на API Windows Vista ETW. Поставщики могут использовать TraceLogging при запуске в Windows Vista или более поздней версии. Существующие контроллеры трассировки ETW можно использовать для управления поставщиками TraceLogging и захвата трассировок с помощью API Windows Vista. Существующие декодировщики трассировки ETW, использующие API декодирования TDH, могут декодировать события TraceLogging при запуске на Windows 10 или последующих версиях.

TraceLogging предлагает несколько преимуществ:

  • Простота определения событий непосредственно в коде, аналогично WPP, но без необходимости предварительной обработки.
  • Структурированные данные: именованные поля с типами, поддержка массивов и структур.
  • Корреляция событий через действия ETW .
  • Все декодированные сведения для события включаются в само событие, поэтому для декодирования дополнительных файлов не требуется.
  • API поставщика событий TraceLogging доступны для C/C++, .NETи среды выполнения Windows (WinRT). Внешняя поддержка, доступная для Python, Rust и т. д.

Хотя TraceLogging предоставляет несколько преимуществ и рекомендуется для использования в новых системах трассировки, ETW на основе манифестов по-прежнему подходит для многих сценариев.

  • Если события предназначены для одного из устаревших журналов Windows в журнале событий Windows (например, журналы систем или приложений), продолжайте использовать трассировку событий на основе манифеста.
  • Если размер файла трассировки является важным фактором, продолжайте использовать трассировку на основе манифеста. События TraceLogging включают строки событий (имя поставщика, имя события и имена полей) внутри каждого события и обычно больше по размеру, чем эквивалентные события, основанные на файле манифеста.
  • Если у вас есть большие инвестиции в существующую технологию трассировки, нет необходимости переключаться на TraceLogging.
  • В противном случае рекомендуется использовать TraceLogging, так как он предлагает более простой интерфейс для разработчика и потребителя событий.

Общие сведения об API

Существует несколько API TraceLogging, каждый из которых предназначен для разных аудиторий разработчиков.

  • Если необходимо создать события из кода C или C++, TraceLoggingProvider.h предоставляет эффективный API для создания событий TraceLogging из кода в пользовательском режиме или в режиме ядра. События должны быть определены во время компиляции.
  • В противном случае, если необходимо создавать события из кода .NET, класс .NET EventSource поддерживает генерацию ETW-событий как на основе манифеста, так и на основе TraceLogging. События должны быть определены во время компиляции.
  • В противном случае, если вы используете среду выполнения Windows (WinRT), LoggingChannel была расширена в Windows 10 для записи событий TraceLogging.
  • В противном случае вы можете использовать поддерживаемый сообществом вариант, например TraceLoggingDynamic.

О трассировке событий