排除所有其他 syslog 设施

排除所有其他 syslog 设施

我正在 syslog 中的 local0 上添加一些自定义日志。

将这些消息写入特定日志很容易,在我的 syslog.conf 中我有

local0.* -/var/log/my.log

但是我如何才能将 local0 从所有其他日志中排除?在我当前的设置中,local0 消息也会显示在 /var/log/syslog 中,因为它被指定为

*.*;auth,authpriv.none -/var/log/syslog

我是否需要浏览所有其他默认日志并添加 local0.none,或者是否可以使用某种全局排除?

答案1

在 syslog 中,恐怕您的假设是正确的,您必须通过local0.none在每个 syslog 行中添加您不想要 local0 来实现。

如果你正在寻找其他选择rsyslog是现在最流行的(所有酷孩子都喜欢它),并且实际上会让你做你想做的事(检查这里)。

系统日志工具允许您执行所要求的操作,甚至还可以通过字符串进行一些非常酷的过滤(检查这里),我使用它在我的日志收集服务器上进行高级系统日志记录。

答案2

syslogd 手册页指出,感叹号用作排除指定优先级的符号,并且“您可以直观地将其用作异常说明符”。给出的示例是

mail.*;mail.!=info              /usr/adm/mail

它将记录除“信息”优先级之外的所有邮件。因此,对于您的问题,我会使用

*.*;local0.!debug;auth,authpriv.none /var/log/syslog

或者,更易读的是,

*.*;local0.none;auth,authpriv.none /var/log/syslog

然而,您应该知道我无法测试这一点。

相关内容