Фильтровать сообщения rsyslogd

У меня есть демон, который каждый день генерирует 15-20 ГБ журналов. Я хочу использовать системный журнал (rsyslogd) для регистрации всех сообщений. Можно эти сообщения перенаправить в файл и не печатать /var/log/syslog?

Я создал правило в /etc/rsyslogd/50-myprogram.conf, которое содержит:

!MYPROGRAM
*.*     /var/local/myprogram/myprogram.log
!*

Теперь каждое сообщение появляется дважды: в /var/local/myprogram/myprogram.log и в /var/log/syslog. Как это решить?


person Victor Dodon    schedule 02.06.2014    source источник


Ответы (3)


Попробуй это:

if $programname == 'myprogram' then /var/local/myprogram/myprogarm.log
person weinrea    schedule 02.06.2014
comment
Пожалуйста, объясните свой ответ, чтобы сделать его более полезным для читателей. - person Mohit Jain; 02.06.2014
comment
Это не все, что было нужно. Пожалуйста, смотрите мой собственный ответ. - person Victor Dodon; 05.06.2014

Вы можете использовать правило остановки в вашем конфигурационном файле.

 *.* stop

Это остановит дальнейшую обработку журнала. Но не забудьте включить свою конфигурацию перед правилом /var/log/syslog.

person Nisarg    schedule 02.06.2014

Мне удалось сделать это с помощью:

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

Важная вещь здесь: & ~, которая отбрасывает сообщения, соответствующие предыдущей строке.

person Victor Dodon    schedule 02.06.2014