Este simples bash one-liner encontrará logs recentes que contêm a string ‘Exception’ e imprimirá a contagem de correspondências:
find . -name '*.log' -mtime -2 -exec grep -Hc Exception {} ; | grep -v :0$
o find
-name '*.log'
– combinar arquivos que terminam com.log
-mtime -2
– combinar arquivos modificados nos últimos 2 dias-exec CMD ARGS ;
– para cada arquivo encontrado, comando, onde executar{}
naARGS
será substituído com o caminho do arquivo
o grep
-c
é imprimir a contagem das correspondências em vez das próprias correspondências-H
é para imprimir o nome do arquivo, já quegrep
normalmente não o imprimirá quando houver apenas um argumento de nome de arquivo- As linhas de saída estarão no formato
path:count
. Os arquivos que não corresponderem a “Exceção” ainda serão impressos, com 0 como contagem - O segundo
grep
filtra a saída do primeiro, excluindo as linhas que terminam com:0
(= os arquivos que não continham correspondências)
Dicas extras
- Altere a “Exceção” para o indicador de falha relevante típico de seu aplicativo
- Adicione
-i
paragrep
para tornar a pesquisa insensível a maiúsculas e minúsculas - Para fazer a
find
correspondência estritamente apenas de arquivos, adicione-type f
- Agende isso como um trabalho periódico e envie por e-mail a saída para você mesmo, canalizando para um remetente, por exemplo
| mailx -s 'error counts' yourmail@example.com
Limitações
O -H
sinalizador de grep
pode não funcionar em sistemas operacionais mais antigos, por exemplo, Solaris mais antigos. Nesse caso, use ggrep
(GNU grep), se existir.