Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


7.4.2.3 错误事件字段

错误日志中的错误事件包含一组键值对,每个事件字段都可以被分类为核心、可选或自定义:

  • 核心字段自动设置为错误事件,但是在事件处理过程中不一定存在,因为任何类型的字段都可能被日志过滤器取消。如果出现这种情况,后续处理组件和执行该过滤器的组件无法找到该字段。

  • 可选字段通常缺省,但是在某些事件类型中可能存在。出现时,提供额外的事件信息。

  • 自定义字段是没有被核心或可选字段定义的任何字段。自定义字段直到由日志过滤器创建才存在。

根据前面的描述,任何给定的字段都可能在事件处理过程中缺失,这可能是因为它从一开始就不存在,也可能被过滤器取消。在日志sink中,字段缺失的影响是 sink 特有的。例如,一个sink 可能将字段从日志消息中删除、表示该字段缺失或使用默认值。当疑问时,可以测试:使用取消该字段的过滤器,然后检查日志sink对它的处理结果。

以下部分描述了核心和可选错误事件字段。对于个别日志过滤组件,可能有这些字段的额外考虑或添加自定义字段不在这里列举。详细信息请查看特定过滤器的文档。

核心错误事件字段

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

  • time

    事件时间戳,微秒精度。

  • msg

    事件消息字符串。

  • prio

    事件优先级,表示系统、错误、警告或注意/信息事件。这一字段对应于syslog中的严重性。以下表格显示了可能的优先级等级。

    Event Type Numeric Priority
    系统事件 0
    错误事件 1
    警告事件 2
    注意/信息事件 3

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

    过滤组件可以根据优先级包括或丢弃错误事件,除了系统事件外都不能丢弃。

    一般来说,消息优先级是按照以下方式确定的:

    是否情况或事件可操作?

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

      • 是:优先级为警告。

      • 否:优先级为错误。

    • 否:是否情况或事件必须?

      • 是:优先级为系统。

      • 否:优先级为注意/信息。

  • 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

      错误事件的线程ID,位于mysqld中,这个ID表示哪一部分服务器产生了事件,并与一般查询日志和慢查询日志消息的连接线程ID一致。

    • query_id

      查询ID。

  • 调试信息:

    • source_file

      事件发生的源文件,去除任何前导路径。

    • source_line

      事件发生的源文件中的行号。

    • function

      事件发生的函数。

    • component

      事件发生的组件或插件。