本节介绍哪些服务器选项配置默认错误日志目标,可以是控制台或命名文件。它还指示哪些日志接收器组件将其自身的输出目标基于默认目标。
在本讨论中,““控制台”” 表示 stderr
,即标准错误输出。这是您的终端或控制台窗口,除非标准错误输出已重定向到其他目标。
服务器对确定默认错误日志目标的选项的解释在 Windows 和 Unix 系统上有所不同。请务必使用适合您平台的信息配置目标。服务器解释默认错误日志目标选项后,它会设置 log_error
系统变量以指示默认目标,这会影响多个日志接收器组件写入错误消息的位置。以下各节将介绍这些主题。
在 Windows 上,mysqld 使用 --log-error
、--pid-file
和 --console
选项来确定默认错误日志目标是控制台还是文件,如果是文件,则确定文件名。
如果给出了
--console
,则默认目标为控制台。(如果同时给出了--console
和--log-error
,则--console
优先,并且以下关于--log-error
的项目不适用。)如果没有给出
--log-error
,或者给出但没有指定文件名,则默认目标是在数据目录中名为
的文件,除非指定了host_name
.err--pid-file
选项。在这种情况下,文件名是在数据目录中以.err
为后缀的 PID 文件基本名称。如果给出
--log-error
以指定文件名,则默认目标是该文件(如果名称没有后缀,则添加.err
后缀)。文件位置在数据目录下,除非给出绝对路径名以指定其他位置。
如果默认错误日志目标是控制台,则服务器将 log_error
系统变量设置为 stderr
。否则,默认目标是一个文件,服务器将 log_error
设置为文件名。
在 Unix 和类 Unix 系统上,mysqld 使用 --log-error
选项来确定默认错误日志目标是控制台还是文件,如果是文件,则确定文件名。
如果没有给出
--log-error
,则默认目标为控制台。如果给出
--log-error
但没有指定文件名,则默认目标是在数据目录中名为
的文件。host_name
.err如果给出
--log-error
以指定文件名,则默认目标是该文件(如果名称没有后缀,则添加.err
后缀)。文件位置在数据目录下,除非给出绝对路径名以指定其他位置。如果在使用 mysqld_safe 启动服务器的系统上的选项文件中,在
[mysqld]
、[server]
或[mysqld_safe]
部分中给出了--log-error
,则 mysqld_safe 会查找并使用该选项,并将其传递给 mysqld。
Yum 或 APT 软件包安装通常使用服务器配置文件中的 log-error=/var/log/mysqld.log
等选项,在 /var/log
下配置错误日志文件位置。从选项中删除路径名会导致使用数据目录中的
文件。host_name
.err
如果默认错误日志目标是控制台,则服务器将 log_error
系统变量设置为 stderr
。否则,默认目标是一个文件,服务器将 log_error
设置为文件名。
服务器解释错误日志目标配置选项后,它会设置 log_error
系统变量以指示默认错误日志目标。日志接收器组件可以根据 log_error
值设置其自身的输出目标,也可以独立于 log_error
确定其目标。
如果 log_error
为 stderr
,则默认错误日志目标为控制台,并且根据默认目标设置其输出目标的日志接收器也会写入控制台。
log_sink_internal
、log_sink_json
、log_sink_test
:这些接收器写入控制台。即使对于可以启用多次的接收器(例如log_sink_json
)也是如此;所有实例都写入控制台。log_sink_syseventlog
:此接收器写入系统日志,而与log_error
值无关。
如果 log_error
不是 stderr
,则默认错误日志目标是一个文件,并且 log_error
指示文件名。根据默认目标设置其输出目标的日志接收器将根据该文件名设置输出文件命名。(接收器可以使用完全相同的名称,也可以使用其变体。)假设 log_error
值为 file_name
。然后,日志接收器将按如下方式使用该名称:
log_sink_internal
、log_sink_test
:这些接收器写入file_name
。log_sink_json
:在log_error_services
值中命名的此接收器的连续实例写入名为file_name
加上编号为.
的后缀的文件:NN
.json
、file_name
.00.json
,等等。file_name
.01.jsonlog_sink_syseventlog
:此接收器写入系统日志,而与log_error
值无关。