Мне не удается получить фильтрацию по программе или средству, работающему в 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
Вы также можете :
Файл, в который вы хотите войти, должен существовать и иметь необходимые разрешения. Выполните следующие команды от имени пользователя root, чтобы создать файл, обновить его разрешения и перезагрузить конфигурацию системного журнала:
touch /var/log/test.log
chmod 600 /var/log/test.log
killall -HUP syslogd
Проверено на FreeBSD 10.3, 11.1 и 12.0.
Примечание: Благодарим пользователя 130370, который упомянул об этом в комментариях. Однако он / она не вернулся, чтобы обновить свой ответ этой информацией. Я считаю, что это следует опубликовать как ответ, поскольку он решил проблему OP.