为什么rsyslog isequal过滤器失败?

问题描述 投票:0回答:1

我想记录从rsyslogd可执行文件(守护进程)到文件的所有内容。

# /etc/rsyslog.conf
if $syslogtag isequal 'rsyslogd' then /tmp/foo.log 
if $syslogtag isequal 'rsyslogd:' then /tmp/foo.log
if $syslogtag isequal ' rsyslogd' then /tmp/foo.log
if $syslogtag isequal ' rsyslogd:' then /tmp/foo.log

在一个单独的shell中:

sv down /root/service/rsyslog/
sv up /root/service/rsyslog/
tail -F /tmp/foo.log

结果:bupkus

所以我编辑rsyslog.conf

# /etc/rsyslog.conf
if $syslogtag contains 'rsyslogd' then /tmp/foo.log 

冲洗并重复;在一个单独的shell中:

sv down /root/service/rsyslog/
sv up /root/service/rsyslog/
tail -F /tmp/foo.log

然后:20190424_195027 linuxbox info rsyslogd: [origin software="rsyslogd" swVersion="8.28.0" x-pid="27384" x-info="http://www.rsyslog.com"] start

是什么赋予了?我不明白为什么尝试使用isequals失败。

%syslogtag%看起来像“rsyslogd”的某些变体,无论是空格还是附着在某处的冒号 - 但我认为我已经完成了所有合理的排列,那么为什么isequal比较失败?

syslog rsyslog
1个回答
1
投票

您需要在解析配置期间查找错误消息(例如使用rsyslogd -N1),因为您的行被忽略。 isequal运算符使用这种语法:

:syslogtag, isequal, "rsyslogd:"  ./output1

if..then语法需要==运算符:

if $syslogtag == 'rsyslogd:' then ./output2

contains运算符适用于两种语法。

© www.soinside.com 2019 - 2024. All rights reserved.