在 Debian 上,除了系统日志之外,还将 MySQL 事件记录到文件中

在 Debian 上,除了系统日志之外,还将 MySQL 事件记录到文件中

默认情况下,Debian 使用 rsyslog 来处理 MySQL 错误日志。我喜欢这种行为,不想改变它。但是,除了/var/log/mysqld.log已经具备的功能之外,我还希望 rsyslog 能够将 MySQL 事件写入/var/log/syslog。我相信这应该可以使用 rsyslog 来实现,所以我不想使用 MySQL--log-error命令选项。

阅读后my.cnf文档部分--syslog,在我看来,使用的 syslog 工具应该被称为mysqldmysqld_safe。因此,我尝试将以下内容添加到我的rsyslog.conf

mysqld.*                        -/var/log/mysqld.log
mysqld_safe.*                   -/var/log/mysqld_safe.log

但是,重新启动 rsyslog 和 mysql 服务后,这些文件没有任何内容被写入。我接触过这些文件,它们与root:adm其他类似文件一样属于/var/log/mail.log,这些文件可以正确接收我的 postfix 和 dovecot 事件。

我对 rsyslog 不熟悉,所以我不知道我做错了什么,或者如何进一步调查这个问题。由于有关将 syslog 记录到 MySQL 的信息太多,而这并不是我想要做的,这让事情变得更加困难。任何帮助都将不胜感激。

编辑:经过进一步调查,我发现这些不是有效的设施(它们是预定义的)。因此,我需要使用替代方法进行筛选,而不是按设施筛选。

答案1

添加以下几行似乎rsyslog.conf可以产生我想要的结果:

:syslogtag, isequal, "mysqld:" -/var/log/mysqld.log
& ~
:syslogtag, isequal, "mysqld_safe:" -/var/log/mysqld.log
& ~
:syslogtag, startswith, "/etc/mysql/debian-start" -/var/log/mysqld.log
& ~

相关内容