本节描述了单个错误日志组件的特征。有关配置错误日志的常规信息,请参阅 第 7.4.2 节,“错误日志”。
日志组件可以是过滤器或接收器:
-
过滤器处理日志事件,以添加、删除或修改事件字段,或者删除事件。结果事件将传递给下一个启用的日志组件。
-
接收器是日志事件的目标(写入器)。通常,接收器将日志事件处理成特定格式的日志消息,并将这些消息写入其关联的输出,例如文件或系统日志。接收器也可以写入性能模式
error_log
表;请参阅 第 29.12.22.2 节,“error_log 表”。事件将未经修改地传递给下一个启用的日志组件(即,虽然接收器将事件格式化以生成输出消息,但它不会修改事件以便内部传递给下一个组件)。
系统变量 log_error_services
列出了启用的日志组件。未在列表中的组件将被禁用。log_error_services
也隐式加载错误日志组件,如果它们尚未加载。有关更多信息,请参阅 第 7.4.2.1 节,“错误日志配置”。
以下部分描述了单个日志组件,按组件类型分组:
组件描述包括以下类型的信息:
-
组件名称和预期用途。
-
组件是否内置或需要加载。对于可加载组件,描述指定了使用
INSTALL COMPONENT
和UNINSTALL COMPONENT
语句时使用的 URN。隐式加载错误日志组件只需要组件名称。有关更多信息,请参阅 第 7.4.2.1 节,“错误日志配置”。 -
组件是否可以在
log_error_services
值中列出多次。 -
对于接收器组件,组件写入输出的目标。
-
对于接收器组件,是否支持性能模式
error_log
表的接口。
错误日志过滤器组件实现错误日志事件的过滤。如果没有启用过滤器组件,则不进行过滤。
任何启用的过滤器组件都只影响 log_error_services
值中列出的后续组件中的日志事件。特别是,对于 log_error_services
中列出的任何日志接收器组件,如果在过滤器组件之前列出,则不会进行日志事件过滤。
log_filter_internal 组件
-
用途:基于日志事件优先级和错误代码的过滤,结合
log_error_verbosity
和log_error_suppression_list
系统变量。请参阅 第 7.4.2.5 节,“基于优先级的错误日志过滤 (log_filter_internal)”。 -
URN:该组件是内置的,不需要加载。
-
多次使用允许:否。
如果 log_filter_internal
被禁用,log_error_verbosity
和 log_error_suppression_list
无效。
log_filter_dragnet 组件
-
目的:根据
dragnet.log_error_filter_rules
系统变量设置实现基于规则的错误日志过滤。见 第 7.4.2.6 节,“基于规则的错误日志过滤 (log_filter_dragnet)”。 -
URN:
file://component_log_filter_dragnet
-
允许多次使用:否。
错误日志 Sink 组件是实现错误日志输出的写入器。如果没有启用 Sink 组件,则不会发生日志输出。
一些 Sink 组件描述引用默认错误日志目标。这是控制台或文件,通过 log_error
系统变量的值确定,如 第 7.4.2.2 节,“默认错误日志目标配置” 所述。
log_sink_internal 组件
-
目的:实现传统的错误日志消息输出格式。
-
URN:该组件是内置的,不需要加载。
-
允许多次使用:否。
-
输出目标:写入默认错误日志目标。
-
性能架构支持:写入
error_log
表。提供了读取以前服务器实例创建的错误日志文件的解析器。
log_sink_json 组件
-
目的:实现 JSON 格式的错误日志记录。见 第 7.4.2.7 节,“JSON 格式的错误日志记录”。
-
URN:
file://component_log_sink_json
-
允许多次使用:是。
-
输出目标:该 Sink 根据默认错误日志目标确定输出目标,该目标由
log_error
系统变量给出:-
如果
log_error
命名了一个文件,该 Sink 基于该文件名,追加一个编号的.
后缀,NN
.jsonNN
从 00 开始。例如,如果log_error
是file_name
,则连续实例的log_sink_json
在log_error_services
值中命名,写入
、file_name
.00.json
等。file_name
.01.json -
如果
log_error
是stderr
,该 Sink 写入控制台。如果log_sink_json
在log_error_services
值中命名多次,它们都写入控制台,这可能不是有用的。
-
-
性能架构支持:写入
error_log
表。提供了读取以前服务器实例创建的错误日志文件的解析器。
log_sink_syseventlog 组件
-
目的:实现错误日志记录到系统日志中。这是在 Windows 上的事件日志,在 Unix 和 Unix-like 系统上是
syslog
。见 第 7.4.2.8 节,“错误日志记录到系统日志”。 -
URN:
file://component_log_sink_syseventlog
-
允许多次使用:否。
-
输出目标:写入系统日志。不使用默认错误日志目标。
-
性能模式支持:不写入
error_log
表。不提供解析器来读取以前服务器实例创建的错误日志文件。
日志接收器测试组件
-
目的:旨在内部使用,以编写测试用例,不适用于生产使用。
-
URN:
file://component_log_sink_test
由于log_sink_test是内部使用的,因此其行为可能随时更改,不指定sink属性,例如是否允许多个使用和输出目标。