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


Настройка и запуск сеанса трассировки событий

Чтобы настроить сеанс трассировки событий, используйте структуру EVENT_TRACE_PROPERTIES для указания свойств сеанса. Память, выделенная для структуры EVENT_TRACE_PROPERTIES , должна быть достаточно большой, чтобы также содержать имена сеансов и файлов журнала, которые соответствуют структуре в памяти.

После указания свойств сеанса вызовите функцию StartTrace , чтобы запустить сеанс. Если функция выполнена успешно, параметр SessionHandle будет содержать дескриптор сеанса, а свойство LoggerNameOffset будет содержать смещение к имени сеанса.

Чтобы разрешить поставщикам, которые требуется регистрировать события в сеансе, вызовите функцию EnableTrace, чтобы включить классические поставщики и функцию EnableTraceEx, чтобы включить поставщиков на основе манифестов. Чтобы предоставить поставщикам возможность фильтрации сеансов в определенных условиях в Windows 8.1,Windows Server 2012 R2 и более поздних версиях, вызовите функцию EnableTraceEx2 .

Кроме того, можно также отслеживать дополнительные сведения о событии с помощью вызова функции TraceSetInformation. TraceSetInformation помещает дополнительные сведения трассировки в расширенный раздел данных события и может включать такие сведения, как сведения о версии трассировки или то, какие поставщики в настоящее время зарегистрированы в системе. Дополнительные сведения см. в разделе "Получение дополнительных данных трассировки событий".

До восьми сеансов трассировки могут включать и получать события от одного поставщика на основе манифеста. Однако только один сеанс трассировки может включить классический поставщик. Если несколько сеансов трассировки пытается включить классический поставщик, первый сеанс перестанет получать события, когда второй сеанс включает поставщика. Например, если поставщик A включен сеанса 1, а затем включен поставщик B сеанса 1, то только сеанс B получит события от поставщика 1.

Вы можете использовать любую из трех функций для включения поставщика, но вы можете потерять функциональные возможности, если вы используете EnableTrace для включения поставщика на основе манифеста, так как вы не сможете предоставить значение MatchAllKeyword, указать расширенные элементы данных для включения в событие или предоставить данные фильтра, определяемые поставщиком. Дополнительные сведения см. в разделе "Примечания" каждой функции.

В Windows 8.1,Windows Server 2012 R2 и более поздних версиях полезные данные событий, области и обходные фильтры стека можно использовать функцией EnableTraceEx2 и структурами ENABLE_TRACE_PARAMETERS и EVENT_FILTER_DESCRIPTOR для фильтрации по определенным условиям в сеансе ведения журнала. Дополнительные сведения о фильтрах полезных данных событий см. в функциях TdhCreatePayloadFilter и функциях TdhAggregatePayloadFilters и структурах ENABLE_TRACE_PARAMETERS, EVENT_FILTER_DESCRIPTOR и PAYLOAD_FILTER_PREDICATE.

Чтобы определить уровень и ключевые слова, используемые для включения поставщика на основе манифеста, используйте одну из следующих команд:

  • Имя поставщика запросов Logman
  • Wevtutil gp provider-name

Команды перечисляют только уровень и ключевые слова, поставщик должен документирует все требования к данным фильтра для потенциальных контроллеров.

Для перечисления поставщиков на основе манифеста используется ep Wevtutil.

Для классических поставщиков поставщики могут документировать и предоставлять доступ к потенциальным контроллерам уровня серьезности или включить флаги, поддерживаемые им. Если поставщик хочет включить любой контроллер, поставщик должен принять 0 для уровня серьезности и включить флаги и интерпретировать 0 как запрос на выполнение ведения журнала по умолчанию (независимо от того, что может быть).

Вы можете включить поставщик до или после регистрации самого поставщика. После включения поставщика ETW вызовет функцию обратного вызова поставщика. Если поставщик не зарегистрирован, ETW вызовет функцию обратного вызова поставщика после регистрации.

Вы также можете использовать функцию EnableTrace , чтобы отключить поставщик (остановить его от ведения журнала в сеанс) или обновить уровень ведения журнала или включить флаги поставщика. С помощью функции EnableTraceEx можно отключить поставщик или обновить уровень, ключевые слова, расширенные данные и фильтровать данные. При каждом вызове функции EnableTrace или EnableTraceEx etW вызывает функцию обратного вызова поставщика. Поставщик по-прежнему включен для сеанса, пока сеанс не отключает поставщика.

Чтобы остановить сеанс трассировки после сбора событий, вызовите функцию ControlTrace и передайте EVENT_TRACE_CONTROL_STOP в качестве кода элемента управления. Чтобы указать сеанс для остановки, можно передать дескриптор сеанса трассировки событий, полученный из предыдущего вызова функции StartTrace , или имя ранее запущенного сеанса. Не забудьте отключить всех поставщиков перед остановкой сеанса. Если вы остановите сеанс перед первым отключением поставщика, ETW отключит поставщика и попытается вызвать функцию обратного вызова поставщика. Если приложение, запущенное сеансом, завершается без отключения поставщика или вызова функции ControlTrace , поставщик по-прежнему включен.

Если ControlTrace выполнен успешно, свойства сеанса обновляются, чтобы отразить окончательные значения свойств и выполнить статистику для сеанса трассировки событий.

Пример запуска сеанса трассировки событий см. в следующем примере:

Дополнительные сведения о запуске сеанса трассировки см. в следующем разделе:

Настройка и запуск сеанса частного ведения журнала

Настройка и запуск сеанса SystemTraceProvider

Настройка и запуск сеанса AutoLogger

Настройка и запуск сеанса ведения журнала ядра NT

ControlTrace

EnableTrace

EnableTraceEx

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

EVENT_TRACE_PROPERTIES

PAYLOAD_FILTER_PREDICATE

StartTrace

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

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