syslog - 为什么 rsyslog isequal 过滤器失败?
问题描述
我想将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
结果:布库斯
所以我编辑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”的一些变体 - 但我认为我已经经历了所有合理的排列,那么为什么比较isequal
失败?
解决方案
您需要在解析配置期间查找错误消息(例如使用rsyslogd -N1
),因为您的行被忽略了。isequal
运算符与这种语法一起使用:
:syslogtag, isequal, "rsyslogd:" ./output1
而if..then
语法需要==
运算符:
if $syslogtag == 'rsyslogd:' then ./output2
该contains
运算符适用于两种语法。
推荐阅读
- mysql - 如何从 MySql EFCore 中的 2 个外键创建主键
- r - 如何从 R 中的交易数据创建已实现交易和未实现交易的表格
- swift - Max OSX Swift App 以提升的权限执行任务
- java - PDF 中的 Java 数据
- mysql - mysql 新表,包含 2 个表中的重复列
- html - Bootstrap 4 .custom-select 类显示两个重叠的箭头样式
- c# - 调用方法不起作用
- google-app-engine - 通过密钥获取实体是否具有很强的一致性?
- android - 如何在不以编程方式在android中打开设置的情况下自动启动
- html - 在我的网站中,开发人员进入另一个如何解决它 [html]