用于日志分析的模式匹配框架 背景技术 日志可以由计算设备用于各种各样的目的。例如, 日志可以用于记录在软件安装 期间遇到的事件, 诸如错误消息等等。 因而, 日志可以充当被一个或多个计算设备遇到的事 件的书面记录。
然而, 随着计算设备的使用变得日益更为流行, 被生成来描述事件的日志也可能 是相应较大的。例如, 用于追踪搜索引擎所遇到的事件的日志可能耗费 15 兆兆字节来描述 在一天内遇到的事件。 然而, 为了分析日志而开发的传统技术可能是效率低的, 并因此在面 临在当前日志中可能遇到的大量信息时是不合适的。
发明内容 描述用于日志分析的模式匹配框架。在一个或多个实施方式中, 经由计算设备的 用户界面来接收一个或多个输入, 其中这一个或多个输入描述指定将被匹配并被从日志中 提取的数据的过滤模式以及指定将如何输出使用过滤模式提取的数据的至少一部分的投 影模式。由计算设备从过滤模式和投影模式中形成被配置成分析日志的查询。
在一个或多个实施方式中, 用户界面由计算设备输出, 其中用户界面被配置成包 括多个形状, 其中一个或多个形状可配置为指定将利用该形状来表示的数据并且一个到另 一个 (one to another) 被安排在用户界面中, 以定义该数据的模式。由计算设备为一个或 多个模式形成查询, 其中这些模式利用一个到另一个的多个形状的安排以及这些形状所表 示的数据来定义, 该查询将被用于分析日志。
在一个或多个实施方式中, 在计算设备上接收查询, 该查询包括过滤模式和投影 模式, 其中过滤模式和投影模式中的每一种模式利用多个形状所表示的数据以及多个形状 在用户界面中一个到另一个的安排来定义。由计算设备使用该查询来分析日志, 该分析包 括: 从日志中提取与过滤模式相匹配的数据, 以及输出与投影模式相匹配的提取数据。
提供这个概述部分来以简化形式介绍下面在详细描述部分中进一步描述的概念 的选择。这个概述部分并不打算标识所请求保护主题的关键特征或基本特征, 也不打算被 用作确定所请求保护主题的范围的辅助手段。
附图说明
参考附图来描述详细描述部分。在附图中, 参考数字的最左边的一个或多个数字 标识该参考数字首次出现在其中的附图。 在说明书和附图的不同实例中相同的参考数字的 使用可以指示相似或相同的项。
图 1 是可操作来将模式匹配框架用于日志分析的示例实施方式中的环境的说明。
图 2 描述可用于指定用于查询的模式的用户界面中的可视化表示的示例实施方 式。
图 3 描述可用于匹配日志中的多个行的用户界面中的可视化表示的示例实施方 式。图 4 描述可用于指定涉及分隔开日志中的任何数量的行的模式的用户界面中的 可视化表示的示例实施方式。
图 5 描述可用于指定涉及分隔开日志中的特定数量的行的模式的用户界面中的 可视化表示的示例实施方式。
图 6 描述可用于在基于组件的服务 (CBS) (component based servicing) 日志中 指定模式的用户界面中的可视化表示的示例实施方式。
图 7 描述其中扩展图 6 的实施方式以捕获在其期间安装尝试失败的程序包名称和 相应错误代码的示例实施方式。
图 8 描述其中进一步修改图 7 的查询来创建查询以追踪程序包的安装失败的示例 实施方式。
图 9 描述其中进一步修改图 8 的查询来创建查询以追踪程序包的特定失败序列的 示例实施方式。
图 10 描述其中进一步修改图 9 的查询来使用逻辑否定运算符创建查询以排除与 一些模式相匹配的输入中的内容的示例实施方式。
图 11 描述其中修改图 2 的查询来创建涉及多次出现 (occurrence) 的查询的示例 实施方式。
图 12 描述被配置成从输入文本中返回被绑定到过滤模式中的变量 “ErrorCode (错误代码) ” 的多个实例的投影模式的示例实施方式。
图 13 描述显示另一个投影模式的示例实施方式。
图 14 描述显示对图 13 的投影模式进行的修改的示例实施方式。 图 15 是可以用于显示为图 8 的过滤模式所发现的匹配的投影模式的示例实施方 式的说明。
图 16 是可以用于显示为图 8 的过滤模式所发现的匹配的另一个投影模式的示例 实施方式的说明。
图 17 是描述其中用户界面被输出以指定将被用作查询来分析日志的一个或多个 模式的示例实施方式中的程序的流程图。
图 18 是描述其中接收查询来分析日志的示例实施方式中的程序的流程图。
具体实施方式
综述 日志可以用于描述被各种不同的计算设备遇到的各种不同的事件。例如, 这些事件的 范围可以从描述软件在单个计算设备上的安装到利用服务器群进行的搜索引擎的运行等 等。 但是, 用于分析日志的传统技术往往缺乏灵活性且是低效的, 并因此不适合与可能描述 广泛情况的这些不同类型的日志一起工作。
描述用于日志分析的模式匹配框架。在一个或多个实施方式中, 描述允许用户指 定用于诸如操作简档等等之类的日志的分析的模式 (例如, 二维模式) 的查询语言。因而, 查 询语言可以被配置成支持可以用于分析描述各种各样情况的日志的模式的表达描述。 在以 下的讨论中, 查询引擎的框架结合示例环境来描述。随后与可以被用于简化查询的开发和 操纵的语言的可视化表示一起来描述框架语言 (frame language) 。 包括说明查询语言的表达力的示例, 其后跟随着可以使用示例环境等来执行的示例程序。
示例环境 图 1 是可操作来采用在这里描述的技术的示例实施方式中的环境 100 的说明。所示的 环境 100 包括可以采用各种方式来配置的计算设备 102。 例如, 计算设备 102 可以被配置为 通信耦合到所示的显示设备 104 的计算机、 笔记本计算机、 移动站、 娱乐设备、 通信耦合到 显示设备的机顶盒、 无线电话、 游戏控制台等等。因而, 计算设备 102 的范围可以从具有大 量存储器和处理器资源的全资源设备 (例如, 个人计算机、 游戏控制台) 到具有有限的存储 器和 / 或处理资源的低资源设备 (例如, 传统的机顶盒、 手持游戏控制台) 。此外, 虽然显示 单个计算设备 102, 但是计算设备 102 可以代表多个不同的设备, 诸如由公司用来执行操作 的多个服务器、 遥控器与机顶盒组合、 图像捕获设备以及被配置成捕获姿态的游戏控制台 等等。
计算设备 102 也可以包括引起计算设备 102 中的硬件执行操作的实体 (例如, 软 件) , 例如处理器、 功能块等。例如, 计算设备 102 可以包括计算机可读介质, 其可以被配置 为保持引起计算设备并且尤其引起计算设备 102 的硬件执行操作的指令。因而, 这些指令 起作用来将硬件配置成执行操作, 并以这种方式导致硬件的变换来执行功能。这些指令可 以利用计算机可读介质通过各种不同的配置被提供给计算设备 102。 计算机可读介质的一种这样的配置是信号承载 (bearing) 介质, 并因而被配置成 诸如经由网络 104 发送指令 (例如, 作为载波) 给计算设备的硬件。计算机可读介质也可 以被配置成计算机可读存储介质, 并因而不是信号承载介质。计算机可读存储介质的示例 包括随机存取存储器 (RAM) 、 只读存储器 (ROM) 、 光盘、 闪存、 硬盘存储器以及可以使用磁技 术、 光学技术和其他技术来存储指令与其他数据的其他存储设备。
用于处理日志 106(在下文也被称为 “日志文件” ) 的传统方法从开发者打开日志 文件并手动检查它们之中的每一个以识别问题到采用编辑器应用的 “发现” 功能而各不相 同。即使 “发现” 功能能够加速在日志文件内识别热点的处理, 但是这些方法都是冗长的且 容易出错。
进一步, 这些传统方法并没有调节 (scale) 来解决大量日志文件的分析的问题, 并且不适合解决模式问题。例如, 涉及操作简档分析的日志 106 的一些更富有表达力的传 统方法牵涉隐式转换日志为表格, 并支持使用 SQL 的子集来查询它们。虽然这样的方法在 提取聚集信息方面可能是强效的, 但是这些方法并不适于提取模式。例如, 对于来自网络 (web) 服务器的日志, 这样的方法可以用于聚集信息或提取与特定过滤器相匹配的事件。 例 如: 1) 由用户利用特定的 IP 地址浏览的页面。 2) 对于特定页面的访问者的数量。 3) 来自特定国家的访问者的数量。
但是, 这些方法在描述在以下示例中显示的模式方面可能具有缺陷 : 1) 多少访问者以那个顺序访问了页面 A、 B 和 C ?这样的查询能够在 SQL 中通过一系 列事件使用自联接 (self-join) (一个用于 A-B, 而另一个用于 B-C) 至与个别访问者相关的 线程记录来构造。 这个解决方案在牵涉较大的日志文件和较长序列的事件时变成计算量大 的。
2) 多少访问过页面 A 的用户没有访问 B、 随后访问 C 或访问 C、 随后访问 D ?再一次, 这 样的查询通常涉及 “自联接” 并且是计算量大的。
因而, 传统的方法并不支持用于从描述执行痕迹、 操作简档、 被配置成事件日志等 等的日志中提取信息的一般模式匹配框架。
在一个或多个实施方式中, 描述允许用户指定二维模式的查询语言。该查询语言 可以将正规表达式用于在日志 106 内的行水平上的模式匹配。此外, 该查询语言可以允许 用户指定如何在日志 106 内相对彼此来 “布置” 这些个别行。
以下是涉及操作简档分析的日志 106 的三个示例, 其中所述分析涉及更高阶模式 匹配并且可以使用在这里描述的查询语言来完成 : 1) 考虑到来自一组设备的日志, 其中有多少具有错误代码 E 的 KBXXXXXX 失败的安装尝 试、 其后跟随着具有错误代码 E’ 的 KBXXXXXX 的安装失败、 最后跟随着具有相同 KB 的安装 成功? 2) 考虑到来自一组设备的日志以及具有特定错误代码的失败的三种已知情形, 隔离不 适合这些已知情形的具有相同错误代码的失败的日志。 3) 考虑到来自搜索引擎的日志, 潜在不愉快的用户展示什么类型的浏览模式? 说明查询构造器模块 108, 其代表允许用户构建查询 110 的功能。例如, 所示的查询构 造器模块 108 包括可视查询构造器模块 112, 其代表使用图形用户界面来构建查询 110 的功 能, 其中图形用户界面可以被输出, 以便在显示设备 104 上显示。查询构造器模块 108 也被 说明为包括文本查询构造器模块 114 来构建文本查询。因而, 查询构造器模块 108 被配置 成允许用户作为文本或采用在下面更详细描述的可视查询语言来操纵查询 110。完全或部 分开发的查询 110 能够作为查询文件来保存。例如, 这些文件可以采用文本格式来存储查 询。这些查询文件随后可以作为输入被传递到查询引擎 116, 以便处理。
如所示的, 查询引擎 116 包括代表读取日志 106 的功能的读取器模块 118。例如, 读取器模块 118 可以被配置成读取使用 SQL 查询从数据库中提取的作为纯文本文件、 结构 化 xml 存储的操作简档信息等等。读取器模块 118 随后可以将这个数据提供给模式匹配引 擎 120, 以便处理, 诸如, 从而将日志中的数据与查询 110 相匹配。 这种处理的结果随后可以 被提供给写入器模块 122, 以便被写入存储设备 124。
写入器模块 122 可以采用诸如纯文本、 结构化 xml (具有来自过滤模式的变量名作 为标签) 之类的各种方式来输出匹配的模式, 将结构化的结果插入数据库表格, 等等。查询 引擎 116 也被说明为包括查询解析器 126, 其代表对查询 110(例如, 输入查询文件) 进行解 析以便处理输入的功能。
读取器模块 118 也被配置成允许用户指定将被读取并被处理的日志 106 (例如, 输 入文件) 的数量, 这可能有助于改善可以处理该文件的速度。如下给出一些示例 : 1) 在输入文件中的前面 “n” 行上处理查询。 2) 在输入文件中的最后 “n” 行上处理查询。 3) 将输入文件拆分为各具有 50 行的大块 (chunk) , 并随后在这些大块中的每一个上处 理查询。
在一个或多个实施方式中, 默认设置是处理整个输入文件, 但是也可以设想其他 的默认实施方式。也可能希望在一次通过 (single pass through) 输入数据文件中处理查询, 以顾及包含相对大量数据的输入数据文件。
包含有界的 “预测先行 (lookahead) ” 的查询 110 可以服从 (amenable) 为了正被 处理的框架实例而相对于输入文件中被保留在存储器中的多个行进行的最优化。另一方 面, 具有无界的预测先行的写的不好的查询在最坏的情况下可能导致跨越整个输入文件的 匹配。设计糟糕的查询也可能发现众多的匹配, 这可能导致大量的部分匹配的框架存储在 存储器中。
因此, 在一个或多个实施方式中, 模式匹配引擎 120 可以将其状态写入临时文件, 并输出所遇到的运行时错误。用户随后可以选择来如下面进一步描述的那样对投影模式 进行一种或多种改变, 并且从保存的状态中恢复查询处理, 从一开始重新启动查询处理, 等 等。 例如, 如果如下面进一步描述的那样对过滤模式进行改变, 用户可以从该输入的开头重 新启动新查询的处理。以这种方式, 模式匹配引擎可能由于查询的投影模式中不相容的投 射操作而减少运行时错误的可能性。 从计算的角度来看, 这样的运行时错误是昂贵的, 这是 因为这些错误可能在已匹配了过滤模式之后出现, 并且甚至有可能在已遍历 (traverse) 输 入文件中的相对大量数据之后出现。结合涉及 “框架语言” 节开始的下面各节可以找到该 环境的操作的进一步讨论。 一般来说, 在这里描述的任何功能能够使用软件、 固件、 硬件 (例如, 固定逻辑电 路) 、 人工处理或这些实施方式的组合来实现。在这里使用的术语 “模块” 、 “引擎” 和 “功能” 通常代表硬件、 软件、 固件或其组合。 在软件实施方式的情况中, 模块、 功能或引擎代表指令 以及执行由例如一个或多个处理器和 / 或功能块之类的硬件指定的操作的硬件。
框架语言 可以从两种模式即过滤模式和投影模式中形成查询。 过滤模式指定将被匹配并被从输 入文件中提取的数据。投影模式指定将被写入输出文件的数据。
可以被用于过滤模式的示例语法如下与相应的产生一起进行介绍。 该语法的进一 步定义遵循此介绍。
由于正规表达式可以用于匹配在输入文件的行内的子串, 在上面的语法中, 可以 将正规表达式 (regex) 与 “string” 和 “int” 一起视为终端。
“Str” 匹配输入的行中的子串与 “string” 或 “regex” 。可选地, 匹配可以被绑定 到变量并稍后在过滤模式中或在投影模式中被引用。
模式 (Pat) 包括 “Str” 或与 “Pat” 级联的 “Str” 。模式与输入数据文件中的一行 相匹配。
块包括标记模式 (用于检测块内的第一行的模式) , 其后跟随着预测先行模式的列 表。有界的预测先行模式涉及行, 其是在与用于块的标记模式相匹配的行之后 (After) 的 行的指定数量。另一方面, 无界的预测先行模式可以匹配在与用于该块的标记模式相匹配 的行之后的任何行。在实施方式中, 如果没有指定 “After” , 则这就是默认值。此外, 模式 可以与输入内的行的一次或多次重复出现 (Repeat) 相匹配。在实施方式中, 如果没有指定 “Repeat” , 则默认情况是一个匹配。
过滤模式 (Frame) 可以涉及块和框架的结合 (&&) 或分离 (||) 。过滤模式 (Frame) 也可以涉及框架或块模式的否定 (! ) 。为过滤模式指定的 “Occurrence” 可以用于确定被 返回的输入中的匹配实例的数量。 在实施方式中, 默认情况是提取这些匹配中的每一个, 但 是可以设想其他的默认情况。框架语言的可视化表示可以用于构建和操纵查询, 如下面进 一步描述的。 可以采用召回 (recall) 功能, 其中过滤查询中的约束变量可以稍后在相同的查询 中重新使用来自动匹配相同的内容。如在以下各节的示例中所示的, 此召回功能在跨越具 有共同方面 (例如, 错误代码、 机器、 用户等等) 的事件构造过滤模式中是有用的。
投影模式用于控制如何在输出中显示与过滤模式相匹配的输入文件中的内容。 例 如, 投影模式可以用来控制显示匹配内容中的哪些部分, 如果有的话, 以及如何在查询输出 中显示这些部分。以下元素可以在构成投影模式中使用。
1) 全局变量 全局变量可以用于过滤和投影模式中。 全局变量的示例包括输出文件名 (Outfile) 、 在 查询处理开始时的时间戳 (StartTimestamp) 、 在查询处理结束时的时间戳 (EndTimestamp) 以及当前日期 (CurDate) 。
2) 过滤模式中的约束变量 通过使用过滤模式中的约束变量作为投影模式的一部分, 可以在输出文件中显示输入 文件中的数据。由于过滤模式中的变量可以与输入文件中的文本的一个以上的实例相匹 配, 所以约束变量可以被配置为匹配值的数组。
3) 静态文本 / 标签 用户可以在投影模式中输入附加文本作为注释或标签。这些字符串可以 “依现状 (as is) ” 被包括在所生成的输出中。
4) 聚集函数 投影模式可以支持在约束变量上使用如同 COUNT、 DISTINCT、 SUM、 AVERAGE、 MIN、 MAX 和 DATEDIFF 之类的聚集函数。
5) 类型投射操作 由于输入被读取为字符串, 所以在一些情况中用户可能希望将一些匹配内容投射到其
他数据类型。支持从字符串到日期、 时间戳、 整数和十进制的变换。这些在各种情况中诸如 在用户对匹配内容运行聚集函数时可能是有用的。
上面的元素如下被反映在用于投影模式的示例语法中 :注意 : 用于投影模式的语法可以被扩展为包括可以应用于过滤的匹配的附加功能。
如果没有明确指定投影模式, 可以将过滤模式中这些框架的每一个匹配实例写入 输出。该输出可以随后经受进一步分析。
框架查询的可视化表示 这一节包括如何可以使用视觉元素来代表框架查询的文本表示中的相应构造的各种 不同示例中的一些示例。
过滤模式 图 2 描述可用于指定查询的模式的用户界面中的可视化表示的示例实施方式 200。该 示例实施方式示出 “Str” , 这是可视化表示的基本元素。
所示的元素被配置成用于检查日志 106 中包含子串 “Error(错误) ” 202 的行 (使 用 regex “*Error*” ) , 并将匹配绑定到变量 “ErrorLine(错误行) ” 204。相同的元素可以 用于通过创建 “BPat” 来匹配包含子串 “Error” 202 的多个行。
图 3 描述可用于匹配日志中的多个行的用户界面中的可视化表示的示例实施方 式 300。在示例实施方式 300 中, 说明可以用于匹配日志 106 中的两行的 “BPat” 。这在这 个示例中通过将 “Repeats(重复) ” 值 302 设置为 “2” 来执行。这种模式可以进一步进行 扩展, 其示例结合以下附图来描述。
图 4 描述可用于指定涉及分隔开日志中的任何数量的行的模式的用户界面中的 可视化表示的示例实施方式 400。在这个示例中, 因为还没有指定 “After(之后) ” , 所以形 成无界的 “预测先行” , 并且两个匹配可以被分隔开任何数量的行。将被分隔开特定数量的 行的匹配的示例结合以下附图来描述。
图 5 描述可用于指定涉及分隔开日志中的特定数量的行的模式的用户界面中的 可视化表示的示例实施方式 500。如所示的, 该模式包括为 “After” 指定的 “three(3) ” 的值 502 作为分隔开两种模式。因而, 如果两个匹配被分隔开三个行, 则不论这三行的内容如 何, 都找到匹配。
图 6 描述可用于在基于组件的服务 (CBS) 日志中指定模式的用户界面中的可视化 表示的示例实施方式 600。示例 CBS 日志中的以下行显示用于安装失败的日志条目的公共 模式 (以粗体显示的键标记) : 2009-02-06 23:57:46, Error CBS Failed to resolve Package: Package_for_KB956391~31bf3856ad364e35~x86~~6.0.1.2. hr: 0x80070490 在所示出的示例查询中, 变量 “ErrorCode” 从匹配上面日志条目的行中收集 CBS 日志 中的每一个十六进制错误代码值。
按照所示出的查询, 首先识别日志文件中包含子串 “Error” 的行。以 “Error” 结 束的子串没有被绑定到变量并被丢弃。以 “hr:” 结束的输入行的其余部分在匹配之后也被 丢弃, 这是因为它没有被绑定到变量。其余十六进制错误代码被绑定到变量 “ErrorCode” 。 所示的查询也可以被扩展, 以捕获失败的安装尝试的程序包名称和相应的错误代码, 其示 例在图 7 的示例实施方式中进行显示。
图 8 描述其中进一步修改图 7 的查询来创建查询以追踪程序包的安装失败的示例 实施方式 800。与前一样, 第一模式匹配 CBS 日志中表示程序包安装失败的行。程序包名称 被绑定到变量 “Package” , 并且错误代码被绑定到变量 “ErrorCode” 。在第二模式中, 被绑 定到变量 “Package” 的程序包名称在该模式内被用于匹配程序包名称。应注意 : 在这种情 况下, 用于指示 “Package” 的表示的变化是变量而不是用于匹配的字符串。即, 这个模式将 匹配来自具有相同或不同错误代码的相同程序包的安装失败的日志中的零行或更多行。
图 9 描述其中进一步修改图 8 的查询来创建查询以追踪程序包的特定失败序列的 示例实施方式 900。 第一模式被配置成匹配程序包安装失败。 在这种情况下, 程序包名称被 绑定到变量 “Package(包) ” , 并且匹配具有错误代码 0x80070002 的失败的实例。该框架匹 配具有 0x800F0826 或 0x80242016 作为错误代码的相同程序包的后续失败 (因为在这些模 式中使用变量 “Package” ) 。
图 10 描述其中进一步修改图 9 的查询来使用逻辑否定运算符创建查询以排除与 一些模式相匹配的输入中的内容的示例实施方式 1000。在所示的示例中, 图 9 的先前情形 被稍微修改, 以致如果需要利用 0x80070002 失败但利用 0x800F0826 或 0x80242016 却未失 败的程序包, 则找到匹配。
图 11 描述其中修改图 2 的查询来创建涉及多个事件的查询的示例实施方式 1000。 说明过滤模式以及相应的 “Occurrences(事件) ” (在这种情况中, 其值为 “2” ) 。因而, 在此 示例中, “内在” 模式被匹配两次, 以发现对于该查询的整体匹配。也可以设想各种其他的示 例。
投影模式 投影模式也可以从与过滤模式中使用的视觉元素相类似的视觉元素中形成。但是, 类 似外观的过滤和投影模式可以暗指非常不同的底层语义。
图 12 描述显示被配置成从被绑定到过滤模式中的变量 “ErrorCode” 1202 的输 入文本中返回多个实例的投影模式的示例实施方式 1200。如果没有匹配的话, 则投影模式将返回零。通过结束聚集函数 “COUNT” 1204 来修改投影模式, 可以列出被绑定到变量 “ErrorCode” 1202 的每一个匹配。
图 13 描述显示另一个投影模式的示例实施方式 1300。在此示例中, 被绑定到变 量 “EventDate” 1302 的实例首先作为日期值被投射。在当前日期 (通过全局变量 CurDate 1304 可访问) 与 “EventDate” 1302 实例之间天数的差异随后使用 “DateDiff” 函数 1306 来 计算。
图 14 描述显示对图 13 的投影模式进行的修改的示例实施方式 1400。在此示例 中, 进行修改以返回自所示出的匹配事件以来最大的天数。投影模式也可以用于增添附加 标签和控制如何将匹配实例写入输出文件。
现在将返回到图 8 的示例实施方式 800。 如前所述, 所示的过滤模式追踪程序包的 安装失败。通常, 可能具有多个匹配, 其中 “Package” 与程序包名称相匹配, 而 “ErrorCode” 与在用于相应程序包的安装尝试期间遇到的各种错误代码相匹配。
具有可以使用投影模式来显示这些匹配的许多方式。 图 15 是可以用于显示为图 8 的过滤模式发现的匹配的投影模式的示例实施方式 1500 的说明。所示的投影模式以如下 格式来显示输出 : Package1 ErrorCode1 Package1 ErrorCode2 Package1 ErrorCode3 … Package2ErrorCode1 Package2ErrorCode2 …。 图 16 是可以用于显示为图 8 的过滤模式发现的匹配的另一个投影模式的示例实 施方式 1500 的说明。在这种情况中, 将以如下格式来显示输出 : Package1 ErrorCode1 ErrorCode2 ErrorCode3 … Package2 ErrorCode1 ErrorCode2 因而, 投影模式可以用于进一步精炼从过滤模式中获得的结果, 以控制显示 “什么” 以 及如何 “显示” 它。也可以设想各种其他的示例。
示例程序 以下讨论描述可以使用先前描述的系统和设备来实施的模式匹配框架技术。 这些程序 中的每一个程序的各方面可以采用硬件、 固件或软件或其组合来实现。这些程序被显示为 一组方框, 其中这些方框指定由一个或多个设备执行的操作, 并且不一定限于所显示的用 于利用各自的方框执行操作的顺序。在以下讨论的各部分中, 分别将参考图 1 的环境 100
和图 2-16 的示例实施方式 200-1600。
图 17 描述其中用户界面被输出以指定将被用作查询来分析日志的一个或多个模 式的示例实施方式中的程序 1700。 由计算设备输出用户界面, 其被配置成包括多个形状, 其 中一个或多个形状可配置成指定将利用该形状表示的数据并且在用户界面中一个或另一 个进行安排, 以定义该数据的模式 (方框 1702) 。例如, 用户界面可以包括如图 2-16 所示的 多个方框。这些方框中的一个或多个方框可以被配置成表示将在日志中发现的特定数据, 诸如错误代码等等。 其他方框可以被配置成指定事件等等。 各种其他的功能也可以被采用, 诸如, 以显示否定操作、 指定将在模式的各部分之间间隔开的行数、 在模式的各部分之间留 下未定义的行数等等, 如前所述。
一个或多个输入经由计算设备的用户界面来接收, 其中这一个或多个输入描述指 定将被匹配并被从日志中提取的数据的过滤模式以及指定将如何输出使用过滤模式提取 的数据的至少一部分的投影模式 (方框 1704) 。结合图 2-11 所描述的过滤模式可以用于定 义将被视为匹配并因而从日志中提取 (例如, 拷贝) 的数据的模式。投影模式可以用于或可 以不用于进一步定义如何乃至是否将输出此数据, 诸如采用什么安排来输出此数据。
由计算设备从过滤模式和投影模式中形成被配置成分析日志的查询 (方框 1706) 。 例如, 图 1 的模式匹配引擎 120 可以使用过滤模式和投影模式作为查询 110 来分析日志 108, 其进一步的描述可以结合以下附图来找到。 图 18 描述其中接收查询来分析日志的示例实施方式中的程序 1800。在计算设备 上接收查询, 该查询包括过滤模式和投影模式, 过滤模式和投影模式中的每一种模式利用 多个形状所表示的数据以及多个形状中的一个或多个在用户界面中一个到另一个的安排 来定义 (方框 1802) 。 如前所述, 用户可以与计算设备 102 所输出的用户界面交互, 以指定模 式。
由计算设备使用查询来分析日志 (方框 1804) , 其包括从日志中提取匹配过滤模式 的数据 (方框 1806) 以及输出所提取的与投影模式相匹配的数据 (方框 1808) 。因而, 过滤模 式可以用于在日志 106 中定位数据, 并且投影模式可以用于定义将如何输出那个数据。
结论 虽然本发明已采用特定于结构特征和 / 或方法动作的语言进行描述了, 但是将明白 : 在所附的权利要求书中定义的发明不一定限于所描述的具体特征或动作。相反, 这些具体 特征和动作被披露为实施所请求保护的发明的示例形式。