syslogd 过滤在 FreeBSD 上不起作用

syslogd 过滤在 FreeBSD 上不起作用

我无法通过 FreeBSD syslogd 中的程序或工具进行过滤。

我补充道

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

到我的/etc/syslog.conf并重新启动 syslog 守护进程。

然后我编写了一个小型 Go 程序testd,向 syslogd(工具“用户”)发送一条“调试”消息,然后使用 发送一条附加消息logger -p local6.debug "msg"。第一条消息仅记录到/var/log/messages(根据默认规则),但没有记录到/var/log/test.log,第二条消息根本没有记录。

看起来规则被忽视了?

答案1

看来您的日志消息由于此行而被发送到 /var/log/debug.log:*.=debug /var/log/debug.log

您可以:

  • 对测试使用其他优先级(例如,通知而不是调试)
  • 更改顺序,以便您的行位于引用 debug.log 的行之前

答案2

您要记录的文件必须存在且具有正确的权限。以 root 身份运行以下命令来创建文件、更新其权限并重新加载 syslog 配置:

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

在 FreeBSD 10.3、11.1 和 12.0 上测试。

笔记:感谢在评论中提到这一点的用户 130370。但是,他/她没有回来用此信息更新他们的答案。我觉得这应该作为答案发布,因为它解决了 OP 的问题。

相关内容