C 过滤rsyslogd消息

C 过滤rsyslogd消息,c,linux,ubuntu-server,rsyslog,C,Linux,Ubuntu Server,Rsyslog,我有一个每天生成15-20GB日志的守护程序。我想使用syslog rsyslogd来记录所有消息。是否可以将这些消息重定向到文件而不打印/var/log/syslog 我在/etc/rsyslogd/50-myprogram.conf中创建了一条规则,其中包含: !MYPROGRAM *.* /var/local/myprogram/myprogram.log !* 现在,每条消息都出现两次,分别出现在/var/local/myprogram/myprogram.log和/var/l

我有一个每天生成15-20GB日志的守护程序。我想使用syslog rsyslogd来记录所有消息。是否可以将这些消息重定向到文件而不打印/var/log/syslog

我在/etc/rsyslogd/50-myprogram.conf中创建了一条规则,其中包含:

!MYPROGRAM
*.*     /var/local/myprogram/myprogram.log
!*
现在,每条消息都出现两次,分别出现在/var/local/myprogram/myprogram.log和/var/log/syslog中。如何解决这个问题?

试试这个:

if $programname == 'myprogram' then /var/local/myprogram/myprogarm.log

您可以在配置文件中使用停止规则

 *.* stop

这将停止进一步处理日志。但请确保在/var/log/syslog规则之前包含您的配置。

if $programname == 'MYPROGRAM' then /var/local/myprogram/myprogram.log
& ~

这里重要的一点是:&~,它将丢弃与前一行匹配的消息。

请解释您的答案,使其对读者更有用。这并不是所需的全部。请看我自己的答案。