### 5.5.3 错误日志组件

本节介绍各个错误日志组件的特征。有关配置错误日志记录的一般信息，请参阅[第 5.4.2 节，“错误日志”](error-log.html).

日志组件可以是过滤器或接收器：

-   过滤器处理日志事件，以添加、删除或修改事件字段，或完全删除事件。结果事件传递到启用组件列表中的下一个日志组件。

-   接收器是日志事件的目的地（写入器）。通常，接收器将日志事件处理为具有特定格式的日志消息，并将这些消息写入其关联的输出，例如文件或系统日志。接收器也可以写入性能模式[`错误日志`](performance-schema-error-log-table.html)桌子;看[第 27.12.21.1 节，“错误\_日志表”](performance-schema-error-log-table.html).事件未经修改地传递到启用组件列表中的下一个日志组件（也就是说，尽管接收器格式化事件以产生输出消息，但它不会修改事件，因为它们在内部传递到下一个组件）。

    这[`日志错误服务`](server-system-variables.html#sysvar_log_error_services)系统变量值列出启用的日志组件。未在列表中命名的组件将被禁用。

    以下部分描述了按组件类型分组的各个日志组件：

-   [过滤错误日志组件](error-log-components.html#error-log-filter-components)

-   [接收器错误日志组件](error-log-components.html#error-log-sink-components)

    组件描述包括以下类型的信息：

-   组件名称和预期用途。

-   组件是内置的还是必须加载的。对于可加载组件，描述指定用于加载和卸载组件的 URN[`安装组件`](install-component.html)和[`卸载组件`](uninstall-component.html)陈述。

-   组件是否可以在[`日志错误服务`](server-system-variables.html#sysvar_log_error_services)价值。

-   对于接收器组件，组件将输出写入的目标。

-   对于 sink 组件，它是否支持 Performance Schema 的接口[`错误日志`](performance-schema-error-log-table.html)桌子。

#### 过滤错误日志组件

错误日志过滤器组件实现对错误日志事件的过滤。如果没有启用过滤器组件，则不会进行过滤。

任何启用的过滤器组件仅影响后面列出的组件的日志事件[`日志错误服务`](server-system-variables.html#sysvar_log_error_services)价值。特别是，对于列出的任何日志接收器组件[`日志错误服务`](server-system-variables.html#sysvar_log_error_services)早于任何过滤器组件，不会发生日志事件过滤。

##### 日志\_筛选\_内部组件

[](<>)[](<>)[](<>)

-   目的：实现基于日志事件优先级和错误码的过滤，结合[`log_error_verbosity`](server-system-variables.html#sysvar_log_error_verbosity)和[`log_error_suppression_list`](server-system-variables.html#sysvar_log_error_suppression_list)系统变量。看[第 5.4.2.5 节，“基于优先级的错误日志过滤（日志\_筛选\_内部的）”](error-log-priority-based-filtering.html).

-   URN：这个组件是内置的，不需要加载[`安装组件`](install-component.html)使用前。

-   允许多次使用：否。

    如果`log_filter_internal`被禁用，[`log_error_verbosity`](server-system-variables.html#sysvar_log_error_verbosity)和[`log_error_suppression_list`](server-system-variables.html#sysvar_log_error_suppression_list)没有效果。

##### 日志\_筛选\_拖网组件

[](<>)[](<>)[](<>)

-   目的：根据定义的规则实现过滤[`dragnet.log_error_filter_rules`](server-system-variables.html#sysvar_dragnet.log_error_filter_rules)系统变量设置。看[第 5.4.2.6 节，“基于规则的错误日志过滤（日志\_筛选\_拉网）”](error-log-rule-based-filtering.html).

-   瓮：`文件：//component_log_filter_dragnet`

-   允许多次使用：否。

#### 接收器错误日志组件

错误日志接收器组件是实现错误日志输出的编写器。如果没有启用 sink 组件，则不会发生日志输出。

一些接收器组件描述是指默认错误日志目标。这是控制台或文件，由[`日志错误`](server-system-variables.html#sysvar_log_error)系统变量，如中所述确定[第 5.4.2.2 节，“默认错误日志目标配置”](error-log-destination-configuration.html).

##### 日志\_下沉\_内部组件

[](<>)[](<>)[](<>)

-   目的：实现传统的错误日志消息输出格式。

-   URN：这个组件是内置的，不需要加载[`安装组件`](install-component.html)使用前。

-   允许多次使用：否。

-   输出目标：写入默认错误日志目标。

-   性能模式支持：写入[`错误日志`](performance-schema-error-log-table.html)桌子。提供一个解析器，用于读取以前的服务器实例创建的错误日志文件。

##### 日志\_下沉\_json组件

[](<>)[](<>)[](<>)

-   目的：实现JSON格式的错误记录。看见[第5.4.2.7节，“JSON格式的错误记录”](error-log-json.html).

-   瓮：`file://component_log_sink_json`

-   允许多种用途：是。

-   输出目标：此接收器根据默认错误日志目标确定其输出目标，该目标由[`日志错误`](server-system-variables.html#sysvar_log_error)系统变量：

    -   如果[`日志错误`](server-system-variables.html#sysvar_log_error)命名一个文件，接收器根据该文件名命名输出文件，再加上一个编号`.*`NN`*.json`后缀，带*`NN`*从6点开始。例如，如果[`日志错误`](server-system-variables.html#sysvar_log_error)是*`文件名`*，连续的`log_sink_json`在[`日志错误服务`](server-system-variables.html#sysvar_log_error_services)值写入`*`文件名`*.00.json`, `*`文件名`*.01.json`等等

    -   如果[`日志错误`](server-system-variables.html#sysvar_log_error)是`标准错误`，接收器写入控制台。如果`log_sink_json`在列表中多次命名[`日志错误服务`](server-system-variables.html#sysvar_log_error_services)值时，它们都会写入控制台，这可能没有什么用处。

-   性能模式支持：写入[`错误日志`](performance-schema-error-log-table.html)桌子提供一个解析器，用于读取以前的服务器实例创建的错误日志文件。

##### 原木\_下沉\_系统事件日志组件

[](<>)[](<>)[](<>)

-   目的：将错误记录到系统日志中。这是Windows上的事件日志，以及`系统日志`在Unix和类Unix系统上。看见[第5.4.2.8节，“错误记录到系统日志”](error-log-syslog.html).

-   瓮：`file://component_log_sink_syseventlog`

-   允许多次使用：否。

-   输出目标：写入系统日志。不使用默认的错误日志目标。

-   性能架构支持：不写入[`错误日志`](performance-schema-error-log-table.html)桌子不提供用于读取以前的服务器实例创建的错误日志文件的解析器。

##### 原木\_下沉\_测试组件

[](<>)[](<>)[](<>)

-   目的：用于编写测试用例的内部使用，而非生产使用。

-   瓮：`file://component_log_sink_test`

    接收器属性，例如是否允许多次使用，以及未为其指定输出目标`日志\水槽\测试`因为，如前所述，它是供内部使用的。因此，其行为随时可能发生变化。
