#### 5.4.2.3 错误事件字段

用于错误日志的错误事件包含一组字段，每个字段都包含一个键/值对。事件字段可以分类为核心、可选或用户定义：

-   为错误事件自动设置核心字段。但是，不能保证在事件处理期间它存在于事件中，因为核心字段与任何类型的字段一样，可能会被日志过滤器取消设置。如果发生这种情况，该过滤器中的后续处理以及过滤器之后执行的组件（例如日志接收器）将无法找到该字段。

-   可选字段通常不存在，但对于某些事件类型可能存在。当存在时，可选字段提供适当且可用的附加事件信息。

-   用户定义字段是名称尚未定义为核心或可选字段的任何字段。用户定义的字段在由日志过滤器创建之前不存在。

    正如前面的描述所暗示的，任何给定的字段在事件处理期间都可能不存在，或者因为它最初不存在，或者被过滤器丢弃。对于日志接收器，字段缺失的影响是特定于接收器的。例如，接收器可能会从日志消息中省略该字段，指示该字段丢失，或替换为默认值。如有疑问，请测试：使用取消设置字段的过滤器，然后检查日志接收器对它的作用。

    以下部分描述了核心和可选的错误事件字段。对于单个日志过滤器组件，这些字段可能有其他特定于过滤器的注意事项，或者过滤器可能会添加此处未列出的用户定义字段。有关详细信息，请参阅特定过滤器的文档。

-   [核心错误事件字段](error-log-event-fields.html#error-log-event-core-fields)

-   [可选错误事件字段](error-log-event-fields.html#error-log-event-optional-fields)

##### 核心错误事件字段

这些错误事件字段是核心字段：

-   `时间`

    事件时间戳，精度为微秒。

-   `味精`

    事件消息字符串。

-   `优先`

    事件优先级，用于指示系统、错误、警告或注释/信息事件。该字段对应于严重程度`系统日志`.下表显示了可能的优先级。

    | 事件类型 | 数字优先级 |
    | ---- | ----- |
    | 系统事件 | 0 |
    | 错误事件 | 1 |
    | 警告事件 | 2 |
    | 备注/信息事件 | 3 |

    这`优先`值是数字。与之相关，错误事件也可能包括一个可选的`标签`将优先级表示为字符串的字段。例如，一个事件`优先`值 2 可能有`标签`的价值`'警告'`.

    过滤器组件可以根据优先级包含或丢弃错误事件，但系统事件是强制性的并且不能被丢弃。

    一般来说，消息优先级的确定如下：

    情况或事件是否可行？

    -   是：情况或事件是否可以忽略？

        -   是：优先级是警告。

        -   否：优先级是错误。

    -   否：情况或事件是强制性的吗？

        -   是：优先是系统。

        -   否：优先事项是注释/信息。

-   `错误代码`

    事件错误代码，以数字形式（例如，`1022`）。

-   `err_symbol`

    事件错误符号，作为字符串（例如，[`'ER_DUP_KEY'`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_dup_key)）。

-   `SQL_state`

    事件 SQLSTATE 值，作为字符串（例如，`'23000'`）。

-   `子系统`

    发生事件的子系统。可能的值为`InnoDB`（这`InnoDB`存储引擎），`重复`（复制子系统），`服务器`（否则）。

##### 可选错误事件字段

可选的错误事件字段分为以下几类：

-   有关错误的其他信息，例如操作系统发出的错误信号或错误标签：

    -   `OS_errno`

        操作系统错误号。

    -   `OS_errmsg`

        操作系统错误消息。

    -   `标签`

        对应的标签`优先`值，作为字符串。

-   发生事件的客户的标识：

    -   `用户`

        客户端用户。

    -   `主持人`

        客户端主机。

    -   `线`

        里面的线程ID[**mysqld**](mysqld.html)负责产生错误事件。该ID表示服务器的哪个部分产生了事件，并且与一般查询日志和慢查询日志消息一致，其中包括连接线程ID。

    -   `查询ID`

        查询 ID。

-   调试信息：

    -   `源文件`

        发生事件的源文件，没有任何前导路径。

    -   `source_line`

        源文件中发生事件的行。

    -   `功能`

        发生事件的函数。

    -   `零件`

        发生事件的组件或插件。
