como filtrar mensagens rsyslog por tags

10

Eu tenho vários aplicativos e scripts para os quais desejo redirecionar a saída para arquivos personalizados.

Eu inicio esses aplicativos usando

command | logger -t TAG

Eu gostaria de filtrar essas mensagens com base em suas tags e redirecioná-las para arquivos diferentes. Eu não quero usar o redirecionamento bash, já que esses aplicativos são principalmente processos de longa duração e precisam de uma rotação adequada de logs.

Eu tentei adicionar um filtro personalizado em /etc/rsyslog.d/60-myfilter.conf;

if $syslogtag == 'giomanager' then /var/log/giomanager.log

O que estou fazendo de errado? Qual é a maneira correta de filtrar com base na tag ou há uma opção melhor para obter um resultado semelhante?

    
por mistyrouge 11.06.2013 / 12:42

2 respostas

6

Então eu finalmente encontrei uma solução para o meu problema.

Muito obrigado a @lain por liderar meu caminho.

A solução mencionada anteriormente é incluir um ':' no nome da tag. Além disso, e isso é muito importante, o nome do arquivo deve estar antes de 50-default.conf em ordem alfabética.

Para retomar, coloque o seguinte em 30-giomanager.conf :

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Note que o arquivo /var/log/giomanager.log deve ser gravável pelo usuário 'syslog'.

    
por 12.06.2013 / 11:24
18

Eu não usei se assim (ou syslogtag) mas eu usei :<blah>,<condition> ... (em particular: msg, contém, ...) mas tente

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

O & stop (Ou, & ~ no rsyslog v6 e anterior (como no RHEL6)) faz com que a mensagem correspondida seja descartada após o registro, caso contrário, ela será analisada por outras regras.

Atualização: testado e

O syslogtag contém um : e deve estar entre "" em vez de ''

    
por 26.05.2016 / 19:46