对于工作,我偶尔需要监视我创建的服务的输出日志。这些日志的生存期很短,包含许多我不一定需要的信息。 到目前为止,我一直在使用:
grep <tag> * | less
其中<tag>
为"信息"、"调试"、"警告"或"错误"。警告的数量大约是错误的 10 倍,调试数量是警告的 10 倍,依此类推。这使得很难在相关的调试消息的海洋中捕获一个错误。例如,我想要一种方法,使所有"WARN"消息都显示在终端的左侧,所有"错误"消息都显示在右侧。
我尝试过使用 tmux 和屏幕,但它似乎在我的开发机器上不起作用。
尝试这样做:
FILE=filename.log
vim -O <(grep 'ERR' "$FILE") <(grep 'WARN' "$FILE")
只需使用 sed 缩进所需的行。 或者,使用颜色。 例如,要将 ERRORS 设为红色,您可以执行以下操作:
$ r=$( printf ' 33[1;31m' ) # escape sequence may change depending on the display
$ g=$( printf ' 33[1;32m' )
$ echo $g # Set the output color to the default
$ sed "/ERROR/ { s/^/$r/; s/$/$g/; }" *
如果这些是实时日志,如何在单独的终端中运行这两个命令:
错误:
tail -f * | grep ERROR
警告:
tail -f * | grep WARN
编辑
要自动执行此操作,您可以在 tmux 会话中启动它。我倾向于使用类似于我在这里描述的 tmux 脚本来执行此操作。
在您的情况下,脚本文件可能包含如下内容:
monitor.tmux
send-keys "tail -f * | grep ERRORn"
split
send-keys "tail -f * | grep WARNn"
然后像这样运行:
tmux new -d ; source-file monitor.tmux; tmux attach
您可以使用屏幕执行此操作。只需垂直拆分屏幕并在每个窗格上运行tail -f LOGFILE | grep KEYWORD
。
作为快捷方式,您可以使用以下 rc 文件:
split -v
screen bash -c "tail -f /var/log/syslog | grep ERR"
focus
screen bash -c "tail -f /var/log/syslog | grep WARN"
然后使用以下方法启动您的screen
实例:
screen -c monitor_log_screen.rc
当然,您可以通过进行更多拆分并使用tail -f
和watch
等命令来进一步扩展此概念来获取不同输出的实时更新。
还可以探索屏幕其他屏幕功能,例如使用多个窗口(带监控)和硬状态,您可以想出一个相当全面的"监控控制台"。