从所有其他人中排除 syslog 设施

Ben*_* K. 5 logging syslog

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

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

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

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

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

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

jst*_*rek 7

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

mail.*;mail.!=info              /usr/adm/mail
Run Code Online (Sandbox Code Playgroud)

它将记录除具有“信息”优先级的邮件消息之外的所有邮件消息。所以,对于你的问题,我会用

*.*;local0.!debug;auth,authpriv.none /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

或者,更具可读性,

*.*;local0.none;auth,authpriv.none /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

但是,您应该知道我无法对此进行测试。


lyn*_*man 5

在系统日志中,恐怕您的假设是正确的,您必须通过添加local0.none到您不希望 local0 进入的每个系统日志行来完成此操作。

如果您正在寻找其他选项,rsyslog现在已经全部包含在内(所有酷孩子都喜欢它),并且实际上会让您执行您所要求的操作(请查看此处)。

此外,syslog-ng允许您执行您所要求的操作,甚至可以通过字符串进行一些非常酷的过滤(请查看此处),我将它用于我的日志收集器服务器上的高级系统日志记录。