Использование событий (журнал событий Windows)

События можно использовать из каналов или из файлов журнала. Для использования событий можно использовать все события или указать выражение XPath, определяющее события, которые вы хотите использовать. Сведения об определении элементов и атрибутов события, которые можно использовать в выражении XPath, см. в разделе Схема событий.

Журнал событий Windows поддерживает подмножество XPath 1.0. Дополнительные сведения об ограничениях см. в разделе Ограничения XPath 1.0.

В следующих примерах показаны простые выражения XPath.

// The following query selects all events from the channel or log file
XPath Query: *

// The following query selects all the LowOnMemory events from the channel or log file
XPath Query: *[UserData/LowOnMemory]

// The following query selects all events with a severity level of 1 (Critical) from the channel or log file
XPath Query: *[System/Level=1]

// The following query shows a compound expression that selects all events from the channel or log file
// where the printer's name is MyPrinter and severity level is 1.
XPath Query: *[UserData/*/PrinterName="MyPrinter" and System/Level=1]

// The following query selects all events from the channel or log file where the severity level is
// less than or equal to 3 and the event occurred in the last 24 hour period.
XPath Query: *[System[(Level <= 3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]

Выражения XPath можно использовать непосредственно при вызове функций EvtQuery или EvtSubscribe или использовать структурированный XML-запрос, содержащий выражение XPath. Для простых запросов, запрашивающих события из одного источника, рекомендуется использовать выражение XPath. Если выражение XPath является составным выражением, содержащим более 20 выражений, или вы запрашиваете события из нескольких источников, необходимо использовать структурированный XML-запрос. Дополнительные сведения об элементах структурированного XML-запроса см. в разделе Схема запроса.

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

Ниже показан структурированный XML-запрос, указывающий набор селекторов и подавителей.

<QueryList>
  <Query Id="0">
    <Select Path="Application">
        *[System[(Level <= 3) and 
        TimeCreated[timediff(@SystemTime) <= 86400000]]]
    </Select>
    <Suppress Path="Application">
        *[System[(Level = 2)]]
    </Suppress>
    <Select Path="System">
        *[System[(Level=1  or Level=2 or Level=3) and 
        TimeCreated[timediff(@SystemTime) <= 86400000]]]
    </Select>
  </Query>
</QueryList>

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

Примечание

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

 

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

Стандартные пользовательские средства для использования событий:

Ограничения XPath 1.0

Журнал событий Windows поддерживает подмножество XPath 1.0. Основное ограничение заключается в том, что селектор событий может выбирать только XML-элементы, представляющие события. Недопустимый запрос XPath, который не выбирает событие. Все допустимые пути селектора начинаются с * или "Event". Все пути расположения работают на узлах событий и состоят из ряда шагов. Каждый шаг состоит из трех частей: ось, тест узла и предикат. Дополнительные сведения об этих частях и XPath 1.0 см. в статье Язык пути XML (XPath). Журнал событий Windows накладывает следующие ограничения на выражение:

  • Ось: поддерживаются только дочерние оси (по умолчанию) и атрибут (и его сокращенное "@").
  • Тесты узлов. Поддерживаются только имена узлов и тесты NCName. Поддерживается символ "*", который выбирает любой символ.
  • Предикаты. Любое допустимое выражение XPath допустимо, если пути к расположению соответствуют следующим ограничениям:
    • Поддерживаются стандартные операторы OR, AND, =, !=, <=, <= >, >и круглые скобки.
    • Создание строкового значения для имени узла не поддерживается.
    • Оценка в обратном порядке не поддерживается.
    • Наборы узлов не поддерживаются.
    • Определение области пространства имен не поддерживается.
    • Узлы пространства имен, обработки и комментариев не поддерживаются.
    • Размер контекста не поддерживается.
    • Привязки переменных не поддерживаются.
    • Функция position и ее сокращенная ссылка на массив поддерживаются (только на конечных узлах).
    • Функция Band поддерживается. Функция выполняет побитовое И для двух аргументов целочисленных чисел. Если результат побитового и является ненулевым, функция принимает значение true; В противном случае функция принимает значение false.
    • Поддерживается функция timediff. Функция вычисляет разницу между вторым и первым аргументами. Одним из аргументов должно быть литеральное число. Аргументы должны использовать представление FILETIME. Результатом является количество миллисекундах между двумя значениями. Результат является положительным, если второй аргумент представляет более позднее время; в противном случае это отрицательное значение. Если второй аргумент не указан, используется текущее системное время.