【问题标题】:Why does rsyslog isequal filter fail?为什么 rsyslog isequal 过滤器失败?
【发布时间】:2019-04-25 03:49:24
【问题描述】:

我想记录从 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

在单独的外壳中:

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 

冲洗并重复;在单独的外壳中:

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”的一些变体,要么带有空格,要么在某处附加了一个冒号——但我想我已经完成了所有合理的排列,那么为什么是 @987654330 @比较失败?

【问题讨论】:

    标签: syslog rsyslog


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2020-04-03
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多