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


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

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

AutoLogger отличается от глобального средства ведения журнала следующими способами:

  • Можно указать один или несколько сеансов AutoLogger (глобальный журнал был одним сеансом, в котором регистрировались все события).
  • AutoLogger отправляет уведомление о включении поставщикам при запуске сеанса (глобальный средство ведения журнала не отправляло уведомление о включении поставщикам, поэтому поставщики должны были полагаться на другие средства, чтобы узнать, запущен ли сеанс глобального средства ведения журнала, чтобы начать ведение журнала событий).
  • AutoLogger не поддерживает ведение журнала событий NT Kernel Logger (см. поле EnableFlags члена EVENT_TRACE_PROPERTIES). Чтобы регистрировать события логгера ядра NT, необходимо использовать Глобальный логгер.

Дополнительные сведения о сеансе глобального средства ведения журнала см. в разделе "Настройка и запуск сеанса глобального средства ведения журнала".

Заметка

ETW поддерживает autoLogger в Windows Vista и более поздних версиях. Используйте глобального средства ведения журнала в более ранних операционных системах.

Вы используете реестр для настройки сеанса AutoLogger. Добавьте следующий ключ реестра, если его еще нет.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

Под ключом Autologger создайте ключ для каждого сеанса AutoLogger, который необходимо настроить, как показано в следующем примере.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                  \Logger Session B
                  \Logger Session C

Для каждого сеанса создайте ключ для каждого поставщика, которого вы хотите включить в сеанс. Используйте GUID поставщика в качестве ключа.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                     \{ProviderGuid1}
                     \{ProviderGuid2}
                  \Logger Session B
                  \Logger Session C

В следующей таблице описываются значения, которые можно определить для каждого сеанса AutoLogger. Для указания этих значений реестра необходимо иметь права администратора. Значения Start и Guid — это единственные значения, необходимые для запуска сеанса AutoLogger; все остальные значения имеют параметры по умолчанию, которые используются, если значение отсутствует в реестре. Как правило, следует использовать значения по умолчанию. Если указать значение, которое не поддерживается, ETW переопределит значение.

Ценность Тип Описание
РазмерБуфера REG_DWORD Размер каждого буфера в килобайтах. Должно быть меньше одного мегабайта. ETW использует размер физической памяти для вычисления этого значения.
ТипЧасов REG_DWORD Таймер, используемый при регистрации метки времени для каждого события.
  • 1 = значение счетчика производительности (высокое разрешение)
  • 2 = системный таймер
  • 3 = счетчик цикла ЦП
Описание каждого типа часов см. в элементе ClientContext структуры WNODE_HEADER.
Значение по умолчанию — 1 (значение счетчика производительности) в Windows Vista и более поздних версиях. До Windows Vista значение по умолчанию равно 2 (системный таймер).
DisableRealtimePersistence REG_DWORD Чтобы отключить сохраняемость в режиме реального времени, задайте для этого значения значение 1. Значение по умолчанию — 0 (включено) для сеансов в режиме реального времени.
Если включена сохраняемость в режиме реального времени, события реального времени, которые не были доставлены во время завершения работы компьютера, будут сохранены. Затем события будут доставлены потребителю при следующем подключении потребителя к сеансу.
FileCounter REG_DWORD Не устанавливайте или не изменяйте это значение. Это значение является серийным номером, используемым для увеличения имени файла журнала, если указан FileMax. Если значение недопустимо, будет предполагаться 1.
Имя файла REG_SZ Полный путь к файлу журнала. Путь к этому файлу должен существовать. Файл журнала является последовательным. Путь ограничен 1024 символами.
Если имя файла не указано, события записываются в %SystemRoot%\System32\LogFiles\WMI\<sessionname.etl>.
FileMax REG_DWORD Максимальное количество экземпляров файла журнала, который создает ETW. Если файл журнала, указанный в FileName существует, etW добавляет значение FileCounter к имени файла. Например, если используется имя файла журнала по умолчанию, форма %SystemRoot%\System32\LogFiles\WMI\<>sessionname.etl.NNNN.
При первом запуске компьютера имя файла — <имя сеанса>.etl.0001, во второй раз имя файла — <имя сеанса>.etl.0002 и т. д. Если FileMax равно 3, то при четвертом перезапуске компьютера ETW сбрасывает счетчик до 1 и перезаписывает файл <sessionname>.etl.0001, если он существует.
Максимальное количество экземпляров поддерживаемого файла журнала — 16.
Не используйте эту функцию в режиме файла журнала EVENT_TRACE_FILE_MODE_NEWFILE.
FlushTimer REG_DWORD Как часто буферы трассировки в секундах принудительно очищаются. Минимальное время очистки составляет 1 секунду. Этот принудительный сброс в дополнение к автоматическому сбросу, который происходит при заполнении буфера или при остановке сеанса трассировки.
В случае средства ведения журнала в режиме реального времени значение нуля (значение по умолчанию) означает, что время очистки будет равно 1 секунде. Средство ведения журнала в режиме реального времени — когда LogFileMode установлено в EVENT_TRACE_REAL_TIME_MODE.
Значение по умолчанию — 0. По умолчанию буферы сбрасываются только в том случае, если они заполнены.
Руководство REG_SZ Строка, содержащая ИДЕНТИФИКАТОР GUID, который однозначно идентифицирует сеанс. Это значение является обязательным.
РежимФайлаЖурнала REG_DWORD Укажите один или несколько режимов журнала. Возможные значения см. в разделе Константы режима ведения журнала. Значение по умолчанию — EVENT_TRACE_FILE_MODE_SEQUENTIAL. Вместо записи в файл журнала можно указать EVENT_TRACE_BUFFERING_MODE или EVENT_TRACE_REAL_TIME_MODE.
Указание EVENT_TRACE_BUFFERING_MODE позволяет избежать затрат на очистку содержимого сеанса на диск, когда файловая система становится доступной.
Обратите внимание, что использование EVENT_TRACE_BUFFERING_MODE приведет к игнорированию значения MaximumBuffers, так как размер буфера является произведением MinimumBuffers и BufferSize.
Сеансы AutoLogger не поддерживают режим ведения журнала EVENT_TRACE_FILE_MODE_NEWFILE.
Если указан EVENT_TRACE_FILE_MODE_APPEND, BufferSize должен быть явно указан и должен быть одинаковым как для регистратора, так и для добавляемого файла.
MaxFileSize REG_DWORD Максимальный размер файла журнала в мегабайтах. Сеанс закрывается при достижении максимального размера, за исключением случаев, когда вы находитесь в режиме циклического файла журнала. Чтобы указать отсутствие ограничения, задайте значение 0. Значение по умолчанию — 100 МБ, если не задано. Поведение, возникающее при достижении максимального размера файла, зависит от значения LogFileMode.
МаксимальныеБуферы REG_DWORD Максимальное количество выделенных буферов. Как правило, это значение — минимальное количество буферов плюс двадцать. ETW использует размер буфера и размер физической памяти для вычисления этого значения. Это значение должно быть больше или равно значению для minimumBuffers.
МинимальныеБуферы REG_DWORD Минимальное количество буферов, выделяемых при запуске. Минимальное количество буферов, которые можно указать, — это два буфера на процессор. Например, на одном процессоре минимальное количество буферов составляет два.
запуск REG_DWORD Чтобы сеанс AutoLogger запускался при следующем перезапуске компьютера, задайте для этого значения значение 1; в противном случае задайте для этого значения значение 0.
Статус REG_DWORD Статус запуска автологгера. Если автолог не удалось запустить, значение этого ключа является соответствующим кодом ошибки Win32. Если AutoLogger успешно запущен, значение этого ключа ERROR_SUCCESS (0).
загрузка REG_DWORD Эта функция не должна использоваться вне сценариев отладки.
Если этот раздел реестра имеет значение 1, автоматический журнал будет запущен раньше, чем обычно во время инициализации ядра, что позволяет ему записывать события во время инициализации многих важных подсистем ядра. Однако включение этого параметра негативно влияет на время загрузки и вводит дополнительные ограничения на автологгер. Если эта функция включена, необходимо заполнить идентификатор GUID сеанса автолога , и некоторые другие параметры автолога могут не работать.
Этот ключ поддерживается в Windows Server 2022 и более поздних версиях.

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

Ценность Тип Описание
включено REG_DWORD Определяет, включен ли поставщик. Чтобы включить поставщика, установите это значение на 1. Чтобы отключить поставщика, задайте для этого значения значение 0. Значение по умолчанию — 0.
ВключитьФлаги REG_DWORD Определяемое поставщиком значение, указывающее класс событий, для которых поставщик создает события. Дополнительные сведения см. в параметре EnableFlags функции EnableTrace. Укажите это имя значения, если поставщик не поддерживает MatchAnyKeyword или MatchAllKeyword.
УровеньВключения REG_DWORD Определяемое поставщиком значение, указывающее уровень детализации, включенный в событие. Например, это значение можно использовать для указания уровня серьезности событий (информационных, предупреждений, ошибок), создаваемых поставщиком. Список предопределенных уровней см. в параметре уровня функции EnableTraceEx.
ВключитьСвойство REG_DWORD Используйте это значение для включения одного или нескольких следующих элементов в файл журнала:
  • EVENT_ENABLE_PROPERTY_SID (0x00000001) = Включите в расширенные данные идентификатор безопасности (SID) пользователя.
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = включить в расширенные данные идентификатор сеанса терминала.
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = включить в расширенные данные трассировку стека вызовов для событий, написанных с помощью EventWrite.
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = фильтрует все события, у которых не указано ненулевое ключевое слово.
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = Указывает, что этот вызов EnableTraceEx2 должен активировать группу поставщиков, а не отдельного поставщика событий.
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = Включить ключ запуска процесса в расширенные данные.
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = включите ключ события в расширенные данные.
  • EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE (0x00000200) = фильтрует все события, которые либо помечены как событие InPrivate, либо происходят из процесса, помеченного как InPrivate.
Дополнительные сведения об этих элементах см. в разделе EnableProperty структуры ENABLE_TRACE_PARAMETERS.
MatchAnyKeyword REG_QWORD Битовая маска ключевых слов, определяющих категорию событий, которые вы хотите, чтобы поставщик записал. Поставщик записывает событие, если любой из ключевых слов события соответствует любому из битов, заданных в этой маске. Чтобы указать, что поставщик записывает все события, задайте для этого значения нулевое значение. Пример см. в разделе "Примечания" функции EnableTraceEx.
ВсеКлючевыеСоответствия REG_QWORD Эта битовая маска является необязательной. Эта маска дополнительно ограничивает категорию событий, которые вы хотите, чтобы поставщик записал. Если ключевое слово события соответствует условию MatchAnyKeyword, поставщик будет записывать событие только в том случае, если все биты в этой маске существуют в ключевом слове события. Эта маска не используется, если MatchAnyKeyword равно нулю. Пример см. в разделе "Примечания" функции EnableTraceEx.

После изменения реестра сеанс Автолога запускается при следующем перезапуске компьютера. Сеанс AutoLogger вызывает функцию EnableTraceEx для того чтобы включить поставщиков.

Сеансы AutoLogger увеличивают время загрузки системы и должны использоваться с осторожностью. Службы, которые хотят записывать данные во время загрузки, должны рассмотреть возможность добавления логики контроллера в себя вместо использования сеанса AutoLogger.

Чтобы остановить сеанс AutoLogger, вызовите функцию ControlTrace. Имя сеанса, которое вы передаете функции, — это имя раздела реестра, который вы использовали для определения сеанса в реестре.

Для получения подробной информации о запуске сеанса трассировки событий см. разделы «Настройка» и«Запуск сеанса трассировки событий».

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

Дополнительные сведения о запуске сеанса ведения журнала ядра NT см. в разделе «Конфигурация и запуск сеанса ведения журнала ядра NT».

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

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

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

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

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

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