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
事件发生的组件或插件。
-