如何让 tail -f 显示彩色输出

如何让 tail -f 显示彩色输出

我希望能够跟踪包含如下消息的服务器日志文件的输出:

INFO
SEVERE

等等,如果是SEVERE,则以红色显示该行;如果是INFO,则为绿色。我可以为命令设置什么样的别名tail来帮助我执行此操作?

答案1

试用多尾1.这是对 的超概括tail -f。您可以在单独的窗口中观看多个文件,根据内容突出显示行等等。

multitail -c /path/to/log

颜色是可配置的。如果默认的配色方案不适合您,请在配置文件中编写您自己的配色方案。例如,multitail -cS amir_log /path/to/log使用以下命令进行调用~/.multitailrc

colorscheme:amir_log
cs_re:green:INFO
cs_re:red:SEVERE

另一种解决方案,如果您所在的服务器不方便安装非标准工具,是与 sed 或 awk 结合使用tail -f以添加颜色选择控制序列。这需要tail -f立即刷新其标准输出,即使其标准输出是管道,我也不知道所有实现是否都这样做。

tail -f /path/to/log | awk '
  /INFO/ {print "\033[32m" $0 "\033[39m"}
  /SEVERE/ {print "\033[31m" $0 "\033[39m"}
'

或与sed

tail -f /path/to/log | sed --unbuffered \
    -e 's/\(.*INFO.*\)/\o033[32m\1\o033[39m/' \
    -e 's/\(.*SEVERE.*\)/\o033[31m\1\o033[39m/'

如果您的 sed 不是 GNU sed,请替换\o033为文字转义字符并删除--unbuffered.

另一种可能性是tail -f运行Emacsshell 缓冲区并使用 Emacs 的语法着色功能。

¹历史网站于 2021 年初消失。最新版本仍然在许多发行版中可用,例如,德班

答案2

GRC,通用着色器非常酷。

apt-get install grc

做就是了

grc tail -f /var/log/apache2/error.log

享受!

您还会发现它GitHub

答案3

你看过吗西泽?您可以使用选项-c或直接在配置文件中自定义某些关键字的默认颜色。如果您的屏幕在着色后变清晰,则必须使用选项-A

编辑:

如果您确实希望将整条线涂成红色,您也可以尝试以下操作:

$ tail -f myfile.log | perl -pe 's/.*SEVERE.*/\e[1;31m$&\e[0m/g'

\e[1;31m会给你红色。如果您想要一些黄色,请使用\e[1;33m,如果您想要绿色,请使用\e[1;32m。恢复\e[0m正常的文本颜色。

答案4

您可以使用彩虹,它根据正则表达式对线条进行着色:

rainbow --red='SEVERE.*' --green='INFO.*' tail -f my-file.log

它还捆绑了预定义配置,例如 Tomcat 日志:

rainbow --config=tomcat tail -f my-file.log

(免责声明:我是作者)

相关内容