为基于规则的解析器配置解析器组件

先决条件:

解析器的作用是接收抽取程序已定界的消息并构建一组字符串值至“公共基本事件”属性的映射。

要配置解析器组件,需要为两个级别的解析器执行配置规则:

配置用于全局处理的规则

  1. 在“适配器配置编辑器”的左窗格中,选择配置 > 上下文实例 > 解析器。右窗格会显示解析器信息。

    显示在右窗格中的解析器配置详细信息

  2. 描述字段中输入解析器的描述。
  3. 如果日志记录包含定界记录中元素的分隔符标记,则在分隔符标记字段中输入该标记。例如,对于 myapp 应用程序日志记录,元素之间的分隔符标记是双空格:
    <March 14, 2004 10:25:21 EST>  application:myapp  severity:3  message:WARNING-file style.css missing
    可通过正则表达式 [ ]{2} 指定分隔符标记。
  4. 如果日志记录包含名值对模式的元素,可在目标标记字段中指定使名称与值关联的标记。使用上面的示例,在 myapp 日志记录中,目标标记为冒号 :

配置用于属性处理的规则

解析器中的第二个执行阶段应用特定的替换规则来标识要将哪些值指定给“公共基本事件”属性。

添加和配置“公共基本事件”属性

下列“公共基本事件”属性是必需的:

有关“公共基本事件”属性的完整列表,请参阅公共基本事件模型

  1. 在“适配器配置编辑器”的左窗格中,选择配置 > 上下文实例 > 解析器 > 公共基本事件。右窗格会显示“公共基本事件”信息。
  2. 要添加新属性,右键单击“公共基本事件”节点并从弹出菜单中选择想要添加的属性。会在“公共基本事件”节点下面创建该属性。在下面的示例中,添加了 msg 属性。

    msg 属性显示在右窗格中

  3. 要配置刚添加的属性,单击该属性。属性详细信息将显示在右窗格中。
  4. 使用上述示例,如果并非所有日志记录都包含 msg 属性,则可选择使用上一匹配替换作为缺省值复选框。这样将把上一条匹配的消息的值指定给 msg 属性。
  5. 如果想要为 msg 设置缺省值,则在缺省值字段中输入该值。仅当替换规则不存在或没有匹配的替换规则且未选择使用上一匹配替换作为缺省值(或者选择了它但没有已保存的上一匹配值)时才会使用此缺省值。
  6. 遵循上面的步骤继续添加所有必需的属性。

添加和配置属性替换规则

要将替换规则添加至“公共基本事件”属性,选择属性 > 添加 > 替换规则。替换规则详细信息会显示在编辑器的右窗格中。

  1. 当日志记录包含用标记定界的名值对时,可使用位置字段。可通过使用基本单位 $h('nameofNameValuePair') 来抽取名值对中的值。
    例如,通过使用 myapp 应用程序中的同一个日志记录:
    <March 14, 2004 10:25:21 EST>  application:myapp  severity:3  message:WARNING-file style.css missing
    在分隔符标记为 []{2} 且目标标记为 : 的情况下,用于抽取消息的基本单位将为 $h('message')。
    有关位置字段的其它应用程序,请参阅位置字段用法主题。
  2. 匹配指定要在记录中搜索的模式。如果指定了“位置”字段,将搜索一部分记录,否则,将搜索整个记录以取得指定的模式。在此模式中,可使用圆括号将可在替换字段中引用的某些数据集中在一起。如果该模式与记录中的数据匹配,则将根据“替换”字段为此规则针对的“公共基本事件”属性提供一个值。如果保留为空白,则将把规则当作匹配。
    myapp 日志记录示例中,要匹配由位置字段抽取的消息的值,可使用以下正则表达式:
    ^(\w+)-(.*)
    此匹配模式包含两个组。第一个组是在短划线前面的一组字符。第二个组是短划线后面直至消息值末尾的所有内容,如“位置”字段规范所定义的那样。
  3. 替换字段是作为匹配的结果要指定给“公共基本事件”属性的值。这些值可使用表示在匹配模式中定义的组的文字 $1 和 $2 等从匹配的字符串中抽取。
    myapp 日志记录示例中,如果只想将警告的值指定给“公共基本事件”msg 属性,则将替换指定为 $2。

    解析的日志记录示例,结果显示在格式化程序结果视图中

  4. 如果想要对通过“位置”、“匹配”和“替换”字段匹配的值运行定制解析逻辑,则可使用替换扩展类。用户类必须实现“通用日志适配器”接口
    classorg.eclipse.hyades.logging.adapter.parsers.ISubstitutionExtension
    从而使“通用日志适配器”能够执行它。

  5. 时间格式字段可用来为 creationTime 属性创建替换规则。在此字段中指定 Java 时间模式字符串。输入的模式将用来使用 java.text.SimpleDateFormat 类对“位置”、“匹配”和“替换”字段匹配的值进行解析以将日期生成为长整型值。然后使用此值来生成“公共基本事件”所需的 XML 模式 dateTime 格式的日期字符串值。
    myapp 日志记录示例中,“时间格式”规则如下所示:

    使用 Java 简单日期格式类的时间格式字段的样本规则

  6. 通过保存适配器配置文件应用所作的更改。
  7. 要测试规则,单击重新运行适配器 重新运行适配器图标的图形 以运行适配器。结果将显示在“格式化程序结果”视图中。
  8. 单击显示下一个事件 显示下一个事件图标的图形 图标以查看使用您编写的规则生成的“公共基本事件”属性。

注意:有关 Java 简单日期格式的更多信息,请参阅 javadoc java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

一旦完成了解析器规则,就可以配置适配器配置文件的输出程序组件了。

相关概念
Hyades 通用日志适配器概述
公共基本事件格式规范

相关任务
创建日志解析器
创建基于规则的适配器
配置输出程序组件

相关参考
适配器配置文件结构
适配器配置编辑器
正则表达式语法
替换规则示例