使用tail命令生成彩色输出
1. 概述
tail 命令经常用于监视日志文件。在这个简短的教程中,我们将讨论使用颜色来增强tail的输出以突出显示日志文件传达的重要信息的方法。
2. 利用输入命令的能力
首先,让我们谈谈一些命令在将它们的输出通过管道传输到另一个程序时的行为。具体来说,让我们考虑当tail通过管道获取输入时会发生什么:
$ <some_command> | tail
终端中的颜色是使用转义字符 生成的。默认情况下,许多命令会检测它们何时写入管道。在这种情况下,它们会产生单色输出。通过这样做,它们不会产生与颜色相关的转义字符,从而使输出更清晰,例如,更适合将内容存储在文件中。
这种默认行为通常是可取的。然而,当将内容通过管道传输到旨在在终端产生可视输出的程序时,我们实际上需要那些转义字符。
当遇到这种情况时,我们首先要做的是检查程序的送尾是否允许我们在写入管道时启用颜色。ls和grep就是这种情况:通过使用*–color=always*选项,这些程序即使在写入管道时也会生成必要的转义码。
3.使用特殊命令
在本节中,我们将讨论一些涉及特殊命令的选项来为我们的日志着色。
3.1. grc
grc 程序作为通用着色器运行。程序自带一套涵盖多种日志类型的规则,我们可以自由添加新规则或编辑已有规则。默认情况下,grc会尝试自动决定正确的颜色配置。让我们看一些例子:
$ grc dig www.blogdemo.com
$ grc ping -c 1 www.blogdemo.com
3.2. multitail
multitail 程序为日志监控提供了许多有用的功能,例如同时显示多个日志、基于正则表达式的过滤以及根据预定义的配色方案为条目着色。
在下面的示例中,我们可以看到multitail列表*/var/log/messages*。该命令自动应用适当的配色方案:
$ multitail -i /var/log/messages
multitail提供了各种配色方案,可在*/etc/multitail.conf文件中找到。-cS选项允许我们选择所需的选项。例如,让我们看看如何使用zarafa*配色方案:
$ multitail -cS zarafa example.log
我们可以轻松地在*/etc/multitail.conf*文件中添加自定义配色方案。
3.3. colortail
另一个简单但功能强大的日志着色器是colortail 。这个工具提供了一个默认的颜色配置文件,我们可以在*/etc/colortail/conf.colortail中找到它。我们可以使用-k或–config*选项提供替代配置。
在下面的示例中,colortail显示彩色 Nginx 日志,突出显示 IP 地址:
$ colortail /var/log/nginx/access.log
4. 使用标准 Linux 实用程序对tail输出进行后处理
在某些情况下,我们只能使用标准的 Linux 命令。
在这种情况下,我们的选择之一是通过处理tail输出来生成彩色文本。我们可以通过包含生成彩色输出所需的转义序列来实现这一点。
让我们看一个使用sed 为tail生成的输出着色的示例。此组合以绿色打印包含“INFO”的行和以红色打印包含“ERROR”的行:
$ tail -f /var/log/mylog.log | sed \
-e 's/\(.*INFO.*\)/\x1B[32m\1\x1B[39m/' \
-e 's/\(.*ERROR.*\)/\x1B[31m\1\x1B[39m/'