Usando o seguinte comando, consegui buscar mensagens de erro abaixo (são 3 linhas).
$ tail -f -n 0 error.log | grep -A2 --line-buffered "Internal server error"
! @79884flo2 - Internal server error, for (GET) [/] ->
play.api.UnexpectedException: Unexpected exception[Missing: No configuration setting found for key init.default]
Tentei poucas técnicas para combinar os logs em uma única linha e com sucesso:
xargs
tail -f -n 0 error.log | grep -A2 --line-buffered "error" | xargs -I @ printf "%s" "@"
awk
tail -f -n 0 error.log | grep -A2 --line-buffered "error" | awk '{ printf("%s ", $0); }'
paste
:
tail -f -n 0 error.log | grep -A2 --line-buffered "error" | paste -d " " - - -
Em seguida, quero enviar a saída para o telegrama usando o comando telegram-notify
:
telegram-notify --error --title "<title>" --text "<output from above command goes here>"
O melhor que posso fazer no momento é enviar cada linha dos logs separadamente usando xargs
para telegrama.
tail -f -n 0 error.log | grep -A2 --line-buffered "error" | xargs -L 3 -I {} telegram-notify --error --title "<title>" --text "{}"
Por favor, avise:
Qual comando entre os três xargs
, awk
, paste
que eu tentei acima deve ser usado para linhas combinadas?
Como canalizar mais ou passar a saída da xargs
/ awk
/ paste
para a telegram-notify
command --text
option