我想将程序中foobar
具有日志级别的日志消息保存err
到 rsyslogd 文件/var/log/foobar.log
中。我该怎么做?
这就是我按程序名称过滤消息的方法:
:programname,contains,"foobar" /var/log/foobar.log
以下是我按日志级别过滤消息的方法:
*.err /var/log/foobar.log
但我不明白如何同时通过这两个过滤器进行过滤。
答案1
rsyslogd wiki 上的这个例子建议一种做你想做的事情的方法。这是使用基于表达式的语法按程序名称进行过滤部分。
使用 wiki 上提供的示例:
if $programname == 'foobar' and $syslogseverity-text == 'error' then /var/log/foobar.log
将其放在 rsyslogd.conf 上或作为 rsyslog.d 中的代码片段
答案2
一个简单的方法是...如果($program包含“foobar”)并且($severity包含“err”)那么/var/log/foobar.log
当然还有许多其他方法,但我认为上述方法非常简单。