默认情况下,Debian 使用 rsyslog 来处理 MySQL 错误日志。我喜欢这种行为,不想改变它。但是,除了/var/log/mysqld.log
已经具备的功能之外,我还希望 rsyslog 能够将 MySQL 事件写入/var/log/syslog
。我相信这应该可以使用 rsyslog 来实现,所以我不想使用 MySQL--log-error
命令选项。
阅读后my.cnf
文档部分--syslog
,在我看来,使用的 syslog 工具应该被称为mysqld
和mysqld_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
& ~