Como logar mensagem de múltiplas linhas com o comando logger?

5

Eu quero registrar uma mensagem de várias linhas no registrador do sistema por meio do commabnd

echo -e "foo\nbar" | logger

Mas aparece como 2 logs.

É possível fazer o log como um único log?

    
por Howard 28.06.2014 / 09:41

4 respostas

3

O registrador não contém esta funcionalidade, é basicamente orientado para a linha - cada linha é uma nova mensagem.

As mensagens de registro multilinha também são um problema para lidar com o uso de utilitários padrão, como o grep etc. Dependendo da hora de chegada, as mensagens também podem ser divididas, dificultando o rastreamento de informações relevantes.

Uma solução melhor é registrar suas mensagens como uma única mensagem. Como @Benjamin sugere, você pode usar tr ou você pode usar echo -En. Se você realmente precisa ter o \ n para fins de exibição posterior, use tr para alterar \ n para algum outro caractere que seu utilitário não gerará para gravar o log e ao ler o uso tr para convertê-lo novamente em \ n.

    
por 28.06.2014 / 10:43
2

Claro, apenas substitua \ n pelo espaço desta forma:

echo -e "foo \ nbar" | tr '\ n' '' | logger

    
por 28.06.2014 / 09:52
0

uma alternativa - supondo que você precisa manter as linhas separadas por 'newline' - seria escrever primeiro em um arquivo temporário e, em seguida, usuário

logger -t <title> -f <temp-file> 
    
por 28.06.2014 / 16:23
0

Divida a saída ...
Exemplo:

ip route show |while read line; do logger -t TEST $line; done
    
por 29.09.2018 / 23:44