使用以下命令,我设法获取下面的错误消息(共 3 行)。
$ 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]
尝试了一些技术将日志组合成一行并成功:
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 " " - - -
接下来我想使用telegram-notify
命令将输出发送到电报:
telegram-notify --error --title "<title>" --text "<output from above command goes here>"
目前我能做的最好的事情就是使用xargs
电报单独发送日志的每一行。
tail -f -n 0 error.log | grep -A2 --line-buffered "error" | xargs -L 3 -I {} telegram-notify --error --title "<title>" --text "{}"
请您指教:
我上面尝试过的三个
xargs
,awk
,中的哪一个命令paste
应该用于组合行?如何进一步通过管道或将输出从//
xargs
传递到命令选项awk
paste
telegram-notify
--text