Фильтрация syslogd не работает во FreeBSD

Я не могу получить фильтрацию по программе или средству, работающему во FreeBSD syslogd.

я добавил

local6.debug            /var/log/test.log
!testd
*.debug                 /var/log/test.log

к моему /etc/syslog.conf и перезапустил демон системного журнала.

Затем я написал небольшую программу Go testd который отправляет сообщение "debug" в syslogd (средство "пользователь"), а затем отправляет дополнительное сообщение, используя logger -p local6.debug "msg", Первое сообщение было зарегистрировано только /var/log/messages (согласно правилам по умолчанию), но не /var/log/test.logвторой не был зарегистрирован.

Кажется, правила игнорируются?

2 ответа

Кажется, что ваши сообщения журнала отправляются в /var/log/debug.log из-за этой строки: *.= Debug /var/log/debug.log

Вы также можете:

  • Используйте другой приоритет для ваших тестов (например, уведомление вместо отладки)
  • Измените порядок так, чтобы ваши строки были перед той, что ссылается на debug.log

Файл, в который вы хотите войти, должен существовать и иметь необходимые разрешения. Выполните следующие команды от имени пользователя root, чтобы создать файл, обновить его разрешения и перезагрузить конфигурацию системного журнала:

touch /var/log/test.log
chmod 600 /var/log/test.log
killall -HUP syslogd

Протестировано на FreeBSD 10.3, 11.1 и 12.0.

Примечание: Кредит переходит к пользователю 13030, который упомянул об этом в комментариях. Тем не менее, он / она не вернулся, чтобы обновить свой ответ с этой информацией. Я чувствую, что это должно быть опубликовано как ответ, так как это решило проблему ОП.

Другие вопросы по тегам