Drupal и логи в /var/log/messages

Сегодня я столкнулся с неприятной особенностью Drupal’а. Если на этой CMS установлен модуль syslog, то он начинает писать свои собственные логи в системный файл логов сервера /var/log/messages. Если быть более точным, о проблеме было известно довольно давно, но именно сегодня она стала слишком назойлива, и её пришлось устранять.

Исходя из того, что сервер работает в режиме шаред-хостинга, такая ситуация несколько не устраивала. В этот лог должны попадать, по моему разумению, только сообщения от серверных демонов, а drupal таковым не является. Если честно, такая «наглость» со стороны системы управления контентом была для меня даже несколько удивительна.

Дано.
FreeBSD 9.1-RELEASE, PHP 5.3.21, Drupal любая версия.

Проблема.
Drupal льёт свои логи в общий файл /var/log/messages

Задача.
Исключить логи Drupal из /var/log/messages

Решение.
Редактируем файл /etc/syslog.conf:
# ee /etc/syslog.conf
Добавляем в него первой строкой исключение для фасилити drupal:
############
!-drupal
############
Перезапускаем демон syslogd:
# /etc/rc.d/syslogd restart

В общем-то, это всё. Но в данном случае есть несколько оговорок.

Если нужно, чтобы drupal всё-таки писал свои логи, но в друге место, нужно добавить в конец файла /etc/syslog.conf две строчки:
####################
!drupal
*.* /var/log/drupal.log
####################
И, соответственно, создать файл /var/log/drupal.log. После чего, опять-таки, перегрузить демон syslogd.

Еще возможны варианты, что при установке модуля syslog в drupal, клиент указал для него свой собственный фасилити. В таком случае сообщения все равно будут попадать в общий файл. Чтобы этого избежать, нужно удалить из конфига syslogd *.err и *.notice, обращенные в /var/log/messages. Эти записи указывают, что все программы, не имеющие собственных обозначений в конфиге будут отправлять свои сообщения в серверный лог messages.

FreeBSD

FreeBSD

vs

drupal

drupal

В решении проблемы были использованы данные из источников:

  • serverfault.com — сайт вопросов и ответов системных и сетевых администраторов.
  • peejseej.nl — персональный блог голландского разработчика и администратора PeejSeej.
  • freebsd.org — без комментариев.