使用事件 (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]]]

可以在调用 EvtQueryEvtSubscribe 函数时直接使用 XPath 表达式,也可以使用包含 XPath 表达式的结构化 XML 查询。 对于查询来自单个源的事件的简单查询,使用 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>

查询的结果集不包含查询时事件快照。 相反,结果集包括查询时的事件,还会包含与查询条件匹配而引发的所有新事件,同时枚举结果。

注意

为由同一线程写入的事件保留事件的顺序。 但是,多个处理器计算机上由不同处理器上的单独线程写入的事件可能不按顺序显示。

 

有关使用事件的详细信息,请参阅以下主题:

用于使用事件的标准最终用户工具包括:

XPath 1.0 限制

Windows事件日志支持 XPath 1.0 的子集。 主要限制是只有表示事件的 XML 元素才能由事件选择器选择。 未选择事件的 XPath 查询无效。 所有有效的选择器路径以 * 或“Event”开头。 所有位置路径在事件节点上运行,由一系列步骤组成。 每个步骤是三个部分的结构:轴、节点测试和谓词。 有关这些部分和 XPath 1.0 的详细信息,请参阅 XML 路径语言 (XPath) 。 Windows事件日志对表达式进行以下限制:

  • 轴:仅支持子 (默认) 和属性 (及其简写“@”) 轴。
  • 节点测试:仅支持节点名称和 NCName 测试。 支持选择任何字符的“*”字符。
  • 谓词:如果位置路径符合以下限制,则任何有效的 XPath 表达式都是可接受的:
    • 支持标准运算符 ORAND、=、!=、=、<<、=>、>=、和括号。
    • 不支持为节点名称生成字符串值。
    • 不支持反向顺序评估。
    • 不支持节点集。
    • 不支持命名空间范围。
    • 不支持命名空间、处理和注释节点。
    • 不支持上下文大小。
    • 不支持变量绑定。
    • 仅叶) 节点上支持位置函数及其速记数组引用 (。
    • 支持带状函数。 该函数对两个整数数参数执行按位 AND。 如果按位 AND 的结果为非零,则函数的计算结果为 true;否则,函数的计算结果为 false。
    • 支持 timediff 函数。 该函数计算第二个参数与第一个参数之间的差异。 其中一个参数必须是文本数字。 参数必须使用 FILETIME 表示形式。 结果是两次之间的毫秒数。 如果第二个参数表示以后的时间,则结果为正;否则为负值。 如果未提供第二个参数,则使用当前系统时间。