Filtrar mensagens de log por nome de programa e nível de log ao mesmo tempo em rsyslogd

5

Eu quero salvar as mensagens de log do programa foobar com o nível de log err no arquivo /var/log/foobar.log em rsyslogd. Como posso fazer isso?

É assim que eu posso filtrar mensagens pelo nome do programa:

:programname,contains,"foobar" /var/log/foobar.log

É assim que posso filtrar mensagens por nível de log:

*.err /var/log/foobar.log

Mas não entendo como filtrar esses dois filtros ao mesmo tempo.

    
por Marko Kevac 02.02.2011 / 13:23

2 respostas

5

Este exemplo no wiki rsyslogd sugere uma maneira de fazer algo como você deseja. É a Filtragem por nome de programa usando a parte da sintaxe baseada em expressão .

Usando o exemplo fornecido no wiki:

if $programname == 'foobar' and $syslogseverity-text == 'error' then /var/log/foobar.log 

Coloque isso no rsyslogd.conf ou como um trecho dentro do rsyslog.d

    
por 02.02.2011 / 14:22
2

uma maneira simples de fazer isso é ... if ($ program contains "foobar") e ($ severity contains "err") então /var/log/foobar.log

É claro que existem muitas outras maneiras, mas eu acho que o texto acima é bastante simples.

    
por 02.02.2011 / 14:38