将错误日志记录到系统日志
跳到导航
跳到搜索
可以让mysqld将错误日志写入系统日志(在Windows上为事件日志,在Unix和类Unix系统上为syslog)。
本节描述如何使用内置过滤器log_filter_internal和系统日志接收器log_sink_syseventlog配置错误日志记录,以立即生效并在后续服务器启动时生效。
要启用系统日志接收器,首先加载接收器组件,然后修改log_error_services值:
INSTALL COMPONENT 'file://component_log_sink_syseventlog'; SET PERSIST log_error_services = 'log_filter_internal; log_sink_syseventlog';
注意 对于MySQL 8.0配置,您必须明确启用将错误日志记录到系统日志。这与MySQL 5.7及更早版本不同,在这些版本中,默认情况下在Windows上启用将错误日志记录到系统日志,并且在所有平台上都不需要加载组件。
将错误日志记录到系统日志可能需要额外的系统配置。请查阅您所使用平台的系统日志文档。
- 在Windows上,写入应用程序日志中的事件日志的错误消息具有以下特征:
- 标记为错误(Error)、警告(Warning)和注记(Note)的条目会写入事件日志,但不会写入来自各个存储引擎的信息语句等消息。
- 事件日志条目的来源为MySQL(如果syseventlog.tag定义为tag,则为MySQL-tag)。
- 在Unix和类Unix系统上,记录到系统日志使用syslog。以下系统变量会影响syslog消息:
- syseventlog.facility:syslog消息的默认设施为daemon。设置此变量以指定不同的设施。
- syseventlog.include_pid:是否在每行syslog输出中包含服务器进程ID。
- syseventlog.tag:此变量定义要添加到syslog消息中服务器标识符(mysqld)的标记。如果定义了标记,则将标记附加到标识符之后,前面带有连字符。
注意 在MySQL 8.0.13之前,使用log_syslog_facility、log_syslog_include_pid和log_syslog_tag系统变量,而不是syseventlog.xxx变量。
MySQL对于有关非错误情况的重要系统消息(例如启动、关闭和一些重要的设置更改),使用自定义标签“System”。在不支持自定义标签的日志中,包括Windows上的事件日志和Unix及类Unix系统上的syslog,系统消息被分配给信息优先级水平使用的标签。但是,即使MySQL的log_error_verbosity设置通常排除信息级别的消息,这些消息也会被打印到日志中。
当日志接收器必须以这种方式将标签回退为“信息”而不是“系统”,并且日志事件在MySQL服务器之外进一步处理(例如通过syslog配置进行过滤或转发),则默认情况下,这些事件可能被次要应用程序处理为“信息”优先级而不是“系统”优先级。