Documentation Home

5.4.2.3 错误事件字段

用于错误日志的错误事件包含一组字段,每个字段由一个键/值对组成。事件字段可以分为核心、可选或用户定义:

  • 为错误事件自动设置一个核心字段。但是,不能保证在事件处理期间它在事件中的存在,因为核心字段与任何类型的字段一样,可能会被日志过滤器取消设置。如果发生这种情况,该过滤器内的后续处理以及在过滤器之后执行的组件(例如日志接收器)将无法找到该字段。

  • 可选字段通常不存在,但对于某些事件类型可能存在。如果存在,可选字段会提供适当且可用的附加事件信息。

  • 用户定义的字段是名称尚未定义为核心或可选字段的任何字段。用户定义的字段在由日志过滤器创建之前不存在。

正如前面的描述所暗示的,任何给定的字段在事件处理过程中都可能不存在,要么是因为它一开始就不存在,要么是被过滤器丢弃了。对于日志汇,字段缺失的影响是特定于汇的。例如,接收器可能会从日志消息中省略该字段,指示该字段丢失或替换为默认值。如有疑问,请测试:使用取消设置该字段的过滤器,然后检查日志接收器对其执行的操作。

以下部分描述了核心和可选的错误事件字段。对于单个日志过滤器组件,这些字段可能有额外的过滤器特定注意事项,或者过滤器可能会添加此处未列出的用户定义字段。有关详细信息,请参阅特定过滤器的文档。

核心错误事件字段

这些错误事件字段是核心字段:

  • time

    事件时间戳,精度为微秒。

  • msg

    事件消息字符串。

  • prio

    事件优先级,用于指示系统、错误、警告或注释/信息事件。该字段对应于 中的严重性syslog。下表显示了可能的优先级。

    事件类型 数字优先级
    系统事件 0
    错误事件 1个
    警告事件 2个
    备注/信息事件 3个

    prio值是数字。与之相关的是,错误事件还可能包含一个可选 label字段,将优先级表示为字符串。例如, prio值为 2 的事件可能具有 label'Warning'

    过滤器组件可能会根据优先级包含或删除错误事件,但系统事件是强制性的且不能删除。

    通常,消息优先级确定如下:

    情况或事件是否可行?

    • 是:情况或事件是否可以忽略?

      • 是:优先级为警告。

      • 否:优先级为错误。

    • 否:情况或事件是强制性的吗?

      • 是:系统优先。

      • 否:优先级是注释/信息。

  • err_code

    事件错误代码,作为数字(例如, 1022)。

  • err_symbol

    事件错误符号,作为字符串(例如, 'ER_DUP_KEY')。

  • SQL_state

    事件 SQLSTATE 值,作为字符串(例如, '23000')。

  • subsystem

    事件发生的子系统。可能InnoDB的值是( InnoDB存储引擎)、 Repl(复制子系统)、 Server(否则)。

可选的错误事件字段

可选的错误事件字段分为以下类别:

  • 有关错误的其他信息,例如操作系统发出的错误信号或错误标签:

    • OS_errno

      操作系统错误号。

    • OS_errmsg

      操作系统错误消息。

    • label

      与值对应的标签prio ,作为字符串。

  • 发生事件的客户端的标识:

    • user

      客户端用户。

    • host

      客户端主机。

    • thread

      mysqld 中负责产生错误事件 的线程的 ID 。此 ID 指示服务器的哪个部分产生了事件,并且与包含连接线程 ID 的一般查询日志和慢查询日志消息一致。

    • query_id

      查询 ID。

  • 调试信息:

    • source_file

      事件发生的源文件,没有任何前导路径。

    • source_line

      源文件中事件发生的行。

    • function

      事件发生的函数。

    • component

      发生事件的组件或插件。