По умолчанию Debian использует rsyslog для обработки журнала ошибок MySQL. Мне нравится такое поведение, и я не хочу его менять. Однако я бы хотел, чтобы rsyslog записывал события MySQL в /var/log/mysqld.log
в дополнение к уже работающим /var/log/syslog
. Я считаю, что это можно сделать с помощью rsyslog, поэтому я не хочу использовать MySQL --log-error
опция команды.
После прочтения my.cnf
раздел документации по --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, поэтому я не уверен, что я делаю не так и как это выяснить. Это усложняется из-за обилия информации о регистрации системного журнала в MySQL, чего я не собираюсь делать. Любая помощь будет оценена.
Редактировать: При дальнейшем исследовании я вижу, что это недействительные объекты (которые заранее определены). Поэтому мне нужно использовать альтернативный метод фильтрации, а не по объектам.
Добавление следующих строк в 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
& ~