Quais são as melhores maneiras de procurar em registros?

em qualquer tipo de serviço, quais são as melhores maneiras de procurar nos registos pelos seguintes casos:

1-Se o erro já tiver ocorrido.
2-Se o bug for reproduzido e se quiser pegar a exceção/erro ocorreu.

Algumas das maneiras que conheço, mas ineficientes, são:

tail -f production.log => log flows and you have to check manually.
tail -n1000 production.log => log for last 1000 lines
tail -f production.log | grep '500 Internal Server Error' => shows the flow of log for only one particular line that says 500.

Eu quero imprimir para as 100 linhas acima do log de modo a imprimir backtrace também em ambos os casos(especialmente para o segundo).

Author: akash, 2015-05-05

2 answers

Pode usar sed, ou seja:

sed  '/500 Internal Server Error/!d' sederror.log|sed 10q

Explicação:

sed  '/500 Internal Server Error/!d' 

Irá imprimir apenas as linhas correspondentes 500 Internal Server Error

sed 100q

Mostra as primeiras 100 linhas (emula tail -n 100)

 1
Author: Pedro Lobito, 2015-05-05 10:18:34
Espero entender exactamente o que queres.

Usar a opção grep com-B (- B, --before-context=NUM imprimir as linhas NUM do contexto principal) para dizer quantas linhas imprimir antes da linha de pesquisa:

Para encontrar o erro em todo o log:

grep  -B 100 '500 Internal Server Error' production.log

Para erro em tempo real:

 tail -f production.log | grep  -B 100 '500 Internal Server Error'
 4
Author: griffon vulture, 2015-05-05 07:10:20