Назад | Перейти на главную страницу

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

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

я добавил

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

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

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

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

Кажется, что ваши сообщения журнала отправляются в /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.

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