我想将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
Run Code Online (Sandbox Code Playgroud)
在单独的外壳中:
sv down /root/service/rsyslog/
sv up /root/service/rsyslog/
tail -F /tmp/foo.log
Run Code Online (Sandbox Code Playgroud)
结果:布库斯
所以我编辑rsyslog.conf:
# /etc/rsyslog.conf
if $syslogtag contains 'rsyslogd' then /tmp/foo.log
Run Code Online (Sandbox Code Playgroud)
冲洗并重复;在一个单独的外壳中:
sv down /root/service/rsyslog/
sv up /root/service/rsyslog/
tail -F /tmp/foo.log
Run Code Online (Sandbox Code Playgroud)
多田: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
Run Code Online (Sandbox Code Playgroud)
而if..then语法需要==运算符:
if $syslogtag == 'rsyslogd:' then ./output2
Run Code Online (Sandbox Code Playgroud)
该contains运算符适用于两种语法。
| 归档时间: |
|
| 查看次数: |
3089 次 |
| 最近记录: |