Console Mac - Colorir mensagens de log específicas

2

Costumo usar o Mac Console para monitorar os logs do meu servidor web. Esses logs são bastante detalhados e fica difícil rolar por eles para monitorar erros.

Cada mensagem no log possui um formato de [AAAA-MM-DD HH: MM: SS.sss] <INFO, WARN, ERROR> <Nome do Encadeamento>

Existe alguma maneira de configurar o console para codificar por cores as mensagens que possuem uma tag de erro? Caso contrário, qual é a maneira ideal de filtrar esses logs? Observe que geralmente é importante ver o que aconteceu imediatamente antes do erro.

Ben Siver
fonte

Respostas:

2

Você pode usar o Terminal e esta função de shell:

cless () 
{ 
   # less-like function that colors specified word
   # 'while read' reads every line and saves it to variable $REPLY
    while read; do
        # If line contains the word to highlight, grep with option --color...
        if [ $(echo $REPLY | grep -c $1) -eq 1 ]; then
            echo $REPLY | grep --color=always $1;
        else
        # ... otherwise simply output the line
            echo $REPLY;
        fi;
    # continue until end of file, paging with 'less'
    done < $2 | less -R
}

São necessários dois argumentos, a palavra para destacar e o arquivo para analisar.

Para usá-lo, abra o Terminal em Aplicativos> Utilitários> Terminal e digite;

$ function cless { while read; do if [ $(echo $REPLY | grep -c $1) -eq 1 ]; then echo $REPLY | grep --color=always $1; else echo $REPLY; fi; done < $2 | less -R; }
$ cless ERROR /path/to/my/logfile.log

Assim como com less, use SPACEou Fpara rolar para frente e Bpara trás. Se a palavra que você procura normalmente é ERROR, crie um alias:

$ alias cerror='cless ERROR'
$ cerror /path/to/my/logfile.log

Para carregar a função e o alias automaticamente quando você inicia o Terminal, adicione estas linhas ao seu ~/.bashrcarquivo:

function cless { while read; do if [ $(echo $REPLY | grep -c $1) -eq 1 ]; then echo $REPLY | grep --color=always $1; else echo $REPLY; fi; done < $2 | less -R; }
alias cerror='cless ERROR'

e recarregue-o:

$ . ~/.bashrc

Se você deseja uma pesquisa sem distinção entre maiúsculas e minúsculas, substitua greppor grep -i(por exemplo, grep -c $1se tornaria grep -i -c $1).

jaume
fonte