用于错误日志的错误事件包含一组字段,每个字段都由一个键值对组成。事件字段可以归类为核心字段、可选字段或用户定义字段
核心字段是为错误事件自动设置的。但是,它在事件处理期间的事件中的存在并非保证,因为核心字段(与任何类型的字段一样)可能被日志过滤器取消设置。如果发生这种情况,该字段将无法通过该过滤器中随后的处理以及在过滤器之后执行的组件(例如日志接收器)找到。
可选字段通常不存在,但可能存在于某些事件类型中。存在时,可选字段将根据情况和可用性提供额外的事件信息。
用户定义字段是任何名称尚未定义为核心字段或可选字段的字段。在由日志过滤器创建之前,用户定义字段不存在。
如前述描述所示,任何给定字段可能在事件处理期间不存在,要么是因为它最初不存在,要么是因为被过滤器丢弃。对于日志接收器,字段不存在的影响是接收器特定的。例如,接收器可能从日志消息中省略该字段,表明该字段丢失,或用默认值替换。如有疑问,请测试:使用取消设置该字段的过滤器,然后检查日志接收器对该字段的处理方式。
以下部分描述了核心错误事件字段和可选错误事件字段。对于各个日志过滤器组件,这些字段可能存在其他过滤器特定的考虑因素,或者过滤器可能添加此处未列出的用户定义字段。有关详细信息,请参阅特定过滤器的文档。
这些错误事件字段是核心字段
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
事件发生的源文件中的行号。
函数
发生事件的函数。
组件
发生事件的组件或插件。