如何从系统日志中过滤 mail.info?

如何从系统日志中过滤 mail.info?

如何从 /var/log/syslog(rsyslog.conf/Debian)中过滤 mail.info 同时保留大于或等于 mail.warn 的消息?

我已经尝试了几乎所有不同的附加和前置组合mail, mail.info, mail.!info, mail.*, mail.warn, mail.!warn,但显然文档比我聪明。

目前我正处于这个阶段,但是可惜的是,她不行:

*.*;auth,authpriv.none;mail.warn,mail.!info -/var/log/syslog

编辑:我真的很难理解分号分隔符以及它如何“限制”先前的条目。

答案1

来自man rsyslog.conf页:

Rsyslogd 对原始 BSD 源代码进行了语法扩展,使其使用起来更加直观。您可以在每个优先级前面加上等号 ( =),以仅指定此单个优先级,而不指定上述任何优先级。您还可以(两种方法都有效)在优先级前面加上感叹号 ( !),以忽略所有优先级,无论是精确指定此优先级还是此优先级和任何更高优先级。如果您同时使用两个扩展,则感叹号必须出现在等号之前,只需直观地使用它即可。

所以mail.!info意味着你忽略了info优先级和任何更高的优先级。试试这个:

*.*;auth,authpriv.none;mail.warn,mail.!=info -/var/log/syslog

答案2

我发现,quanta 的答案还有其他几种变体,它们似乎也有效。我知道它们为什么有效,但我对 rsyslog.conf 的分隔符和运算符不够有信心,无法肯定地说。希望它们能帮助别人。

一。

*.*;\
    auth,authpriv.none;\
    mail.!info,mail.warn     -/var/log/syslog

二。

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

欢迎更了解情况的人对此发表评论。

相关内容