Фильтрация 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, который упомянул об этом в комментариях. Тем не менее, он / она не вернулся, чтобы обновить свой ответ с этой информацией. Я чувствую, что это должно быть опубликовано как ответ, так как это решило проблему ОП.