本节介绍单个错误日志组件的特征。有关配置错误日志记录的一般信息,请参见第 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 组件描述引用了默认错误日志目标。这是控制台或文件,由 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 系统上的
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
,未指定 sink 属性(例如是否允许多次使用以及输出目标),因为如上所述,它用于内部使用。因此,其行为可能会随时更改。