用于错误日志的错误事件包含一组字段,每个字段都由一个键值对组成。事件字段可以分为核心、可选或用户定义的
核心字段是为错误事件自动设置的。但是,它在事件处理期间在事件中的存在并不保证,因为核心字段(就像任何类型的字段一样)可能会被日志过滤器取消设置。如果发生这种情况,该字段将无法被该过滤器中的后续处理以及在过滤器之后执行的组件(如日志接收器)找到。
可选字段通常不存在,但可能存在于某些事件类型中。存在时,可选字段将根据需要和可用性提供额外的事件信息。
用户定义字段是任何名称不是核心字段或可选字段的字段。用户定义字段在日志过滤器创建之前不存在。
如前面的描述所示,任何给定字段都可能在事件处理期间不存在,这可能是因为该字段一开始不存在,或者被过滤器丢弃了。对于日志接收器,字段不存在的影响是接收器特定的。例如,接收器可能会省略日志消息中的字段,指示该字段丢失或替换默认值。如有疑问,请测试:使用一个取消设置该字段的过滤器,然后检查日志接收器如何处理它。
以下部分描述了核心和可选错误事件字段。对于单独的日志过滤器组件,这些字段可能存在其他过滤器特定的注意事项,或者过滤器可能会添加此处未列出的用户定义字段。有关详细信息,请参阅特定过滤器的文档。
这些错误事件字段是核心字段
时间
事件时间戳,精度为微秒。
消息
事件消息字符串。
优先级
事件优先级,用于指示系统、错误、警告或注释/信息事件。此字段对应于
syslog
中的严重程度。下表显示了可能的优先级级别。事件类型 数字优先级 系统事件 0 错误事件 1 警告事件 2 注释/信息事件 3 prio
值是数字。与它相关,错误事件还可以包含一个可选的label
字段,表示优先级作为字符串。例如,prio
值为 2 的事件可能具有label
值为'Warning'
。过滤器组件可能会基于优先级包含或删除错误事件,但系统事件是强制性的,不能删除。
一般来说,消息优先级确定如下
情况或事件是否可操作?
是:情况或事件是否可以忽略?
是:优先级为警告。
否:优先级为错误。
否:情况或事件是否为强制性?
是:优先级为系统。
否:优先级为注释/信息。
err_code
事件错误代码,以数字形式(例如,
1022
)。err_symbol
事件错误符号,以字符串形式(例如,
'ER_DUP_KEY'
)。SQL_state
事件 SQLSTATE 值,以字符串形式(例如,
'23000'
)。子系统
发生事件的子系统。可能的值是
InnoDB
(InnoDB
存储引擎)、Repl
(复制子系统)、Server
(否则)。
可选错误事件字段分为以下几类
有关错误的附加信息,例如操作系统发出的错误或错误标签
OS_errno
操作系统错误号。
OS_errmsg
操作系统错误消息。
标签
与
prio
值对应的标签,以字符串形式。
发生事件的客户端标识
用户
客户端用户。
主机
客户端主机。
线程
导致错误事件的 mysqld 内线程的 ID。此 ID 指示服务器的哪个部分生成了事件,并且与通用查询日志和慢速查询日志消息一致,这些消息包括连接线程 ID。
query_id
查询 ID。
调试信息
source_file
发生事件的源文件,不包含任何前导路径。
source_line
发生事件的源文件中的行。
function
发生事件的函数。
component
发生事件的组件或插件。