本节介绍各个错误日志组件的特征。有关配置错误日志记录的常规信息,请参阅 第 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
允许多次使用:否。
错误日志接收器组件是实现错误日志输出的写入器。如果没有启用接收器组件,则不会发生日志输出。
一些接收器组件描述引用了默认的错误日志目标。这是控制台或文件,由 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
允许多次使用:是。
输出目标:此接收器根据默认的错误日志目标确定其输出目标,该目标由
log_error
系统变量给出。如果
log_error
指定了一个文件,则接收器将基于该文件名加上一个编号为.
的后缀来命名输出文件,其中NN
.jsonNN
从 00 开始。例如,如果log_error
为file_name
,则log_error_services
值中命名的log_sink_json
的连续实例将写入
、file_name
.00.json
,依此类推。file_name
.01.json如果
log_error
为stderr
,则接收器将写入控制台。如果log_sink_json
在log_error_services
值中被多次命名,则它们都将写入控制台,这可能没有用。
性能模式支持:写入
error_log
表。提供了一个解析器,用于读取先前服务器实例创建的错误日志文件。
log_sink_syseventlog 组件
用途:实现将错误记录到系统日志。在 Windows 上是事件日志,在 Unix 和类 Unix 系统上是
syslog
。请参阅 第 7.4.2.8 节“将错误记录到系统日志”。URN:
file://component_log_sink_syseventlog
允许多次使用:否。
输出目标:写入系统日志。不使用默认的错误日志目标。
性能模式支持:不写入
error_log
表。不提供用于读取先前服务器实例创建的错误日志文件的解析器。
log_sink_test 组件
用途:旨在供内部使用以编写测试用例,不用于生产环境。
URN:
file://component_log_sink_test
未为 log_sink_test
指定接收器属性(例如是否允许多次使用和输出目标),因为如前所述,它仅供内部使用。因此,其行为随时可能发生变化。