用于错误日志的错误事件包含一组字段,每个字段由一个键/值对组成。事件字段可以分为核心、可选或用户定义:
为错误事件自动设置一个核心字段。但是,不能保证在事件处理期间它在事件中的存在,因为核心字段与任何类型的字段一样,可能会被日志过滤器取消设置。如果发生这种情况,该过滤器内的后续处理以及在过滤器之后执行的组件(例如日志接收器)将无法找到该字段。
可选字段通常不存在,但对于某些事件类型可能存在。如果存在,可选字段会提供适当且可用的附加事件信息。
用户定义的字段是名称尚未定义为核心或可选字段的任何字段。用户定义的字段在由日志过滤器创建之前不存在。
正如前面的描述所暗示的,任何给定的字段在事件处理过程中都可能不存在,要么是因为它一开始就不存在,要么是被过滤器丢弃了。对于日志汇,字段缺失的影响是特定于汇的。例如,接收器可能会从日志消息中省略该字段,指示该字段丢失或替换为默认值。如有疑问,请测试:使用取消设置该字段的过滤器,然后检查日志接收器对其执行的操作。
以下部分描述了核心和可选的错误事件字段。对于单个日志过滤器组件,这些字段可能有额外的过滤器特定注意事项,或者过滤器可能会添加此处未列出的用户定义字段。有关详细信息,请参阅特定过滤器的文档。
这些错误事件字段是核心字段:
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
发生事件的组件或插件。