本节描述了哪些服务器选项配置默认错误日志目标,可以是控制台或命名文件。它还指示哪些日志sink组件基于默认目标。
在本讨论中,“控制台”表示 stderr
,标准错误输出。这是您的终端或控制台窗口,除非标准错误输出被重定向到不同的目标。
服务器对Windows和Unix系统的默认错误日志目标选项进行不同的解释。请确保根据您的平台配置目标。服务器解释默认错误日志目标选项后,将 log_error
系统变量设置为默认目标,这将影响多个日志sink组件写入错误消息的位置。以下部分将讨论这些主题。
在Windows上,mysqld 使用 --log-error
、--pid-file
和 --console
选项来确定默认错误日志目标是控制台还是文件,并且,如果是文件,则是文件名:
-
如果给定
--console
,则默认目标是控制台。(--console
优先于--log-error
如果两者都给定,则以下关于--log-error
的项目不适用。) -
如果没有给定
--log-error
,或没有命名文件,则默认目标是一个名为
的文件在数据目录中,除非指定了主机名
.err--pid-file
选项。在那种情况下,文件名是PID文件基名加上.err
后缀在数据目录中。 -
如果给定
--log-error
以命名文件,则默认目标是该文件(如果名称没有后缀,则添加.err
后缀)。文件位置在数据目录中,除非给定绝对路径名以指定不同的位置。
如果默认错误日志目标是控制台,服务器将 log_error
系统变量设置为 stderr
。否则,默认目标是一个文件,服务器将 log_error
设置为文件名。
在Unix和类Unix系统上,mysqld 使用 --log-error
选项来确定默认错误日志目标是控制台或文件,并且,如果是文件,则是文件名:
-
如果没有给出
--log-error
,默认目标是控制台。 -
如果给出了
--log-error
但没有指定文件名,默认目标是一个名为
的文件,在数据目录中。主机名
.err -
如果给出了
--log-error
以指定文件名,默认目标是该文件(如果名称没有后缀,将添加.err
后缀)。文件位置在数据目录中,除非指定了绝对路径以指定不同的位置。 -
如果在选项文件的
[mysqld]
、[server]
或[mysqld_safe]
部分中给出了--log-error
,在使用mysqld_safe启动服务器时,mysqld_safe将找到并使用该选项,并将其传递给mysqld。
Yum 或 APT 软件包安装通常会在服务器配置文件中配置错误日志文件位置,例如在/var/log
下,以log-error=/var/log/mysqld.log
选项。从选项中删除路径名将导致使用数据目录中的
文件。主机名
.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
值为文件名
。那么日志接收器将使用该名称,如下所示: