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