为什么 rsyslog isequal 过滤器会失败?
Why does rsyslog isequal filter fail?
我想记录从 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
比较失败?
您需要在解析配置期间查找错误消息(例如使用 rsyslogd -N1
),因为您的行将被忽略。 isequal
运算符用于这种语法:
:syslogtag, isequal, "rsyslogd:" ./output1
而 if..then
语法需要 ==
运算符:
if $syslogtag == 'rsyslogd:' then ./output2
contains
运算符适用于两种语法。
我想记录从 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
比较失败?
您需要在解析配置期间查找错误消息(例如使用 rsyslogd -N1
),因为您的行将被忽略。 isequal
运算符用于这种语法:
:syslogtag, isequal, "rsyslogd:" ./output1
而 if..then
语法需要 ==
运算符:
if $syslogtag == 'rsyslogd:' then ./output2
contains
运算符适用于两种语法。