Colorize tail output
Colorize tail output
我一直在努力让服务器启动时的日志更易读。我的当前命令会筛除掉启动过程中的大部分 INFO 和 DEBUG 信息:
tail -F ../server/durango/log/server.log | grep -e "ERROR" -e "WARN" -e "Shutdown" -e "MicroKernel" | grep --color=auto -E 'MicroKernel|$'
我想的是用黄色突出显示WARN,用红色突出显示ERROR,用绿色突出显示MicroKernel。我试过多次使用grep --color=auto进行管道操作,但只有最后一个命令的颜色生效。
是否有一行命令可以实现这个效果?或者有多行命令可以实现吗?
问题出现的原因:
作者使用grc工具对日志文件进行查看和跟踪,以便更容易地发现错误。然而,grc工具在系统上并不是默认安装的,需要手动安装和配置。
解决方法:
1. 下载grc工具,可以从https://github.com/garabik/grc获取源代码,或者从常见的Linux发行版的软件包管理器中安装。
2. 安装grc工具,可以按照官方文档或者软件包管理器的指导进行安装。
3. 配置grc工具,可以通过修改/etc/profile.d/grc.sh文件来定义默认的颜色化输出命令别名。在该文件中添加以下内容:
if [ -x /usr/bin/grc ]; then alias cat='grc --colour auto cat' alias tail='grc --colour auto tail' alias head='grc --colour auto head' fi
4. 保存文件并退出。重新启动终端或者重新加载配置文件以使修改生效。
5. 现在可以使用颜色化的tail命令查看和跟踪日志文件了。例如,运行以下命令:
grc tail -f /var/log/syslog
这将以颜色区分显示syslog文件的输出,使错误更容易被发现。
通过上述步骤,可以解决使用grc工具进行日志文件颜色化输出的问题。
这篇文章主要介绍了一个脚本highlight,用于在标准输出中高亮显示指定的模式。文章中提到,该脚本可以通过管道将多个highlight的调用连接起来,来实现多个颜色的覆盖。
highlight脚本的用法如下:
Usage: ./highlight [-i] [--color=COLOR_STRING] [--][PATTERN1...] This is highlight version 1.0. This program takes text via standard input and outputs it with the given perlre(1) pattern(s) highlighted with the given color. If no color option is specified, it defaults to 'bold red'. Colors may be anything that Perl's Term::ANSIColor understands. This program is similar to "grep --color PATTERN" except both matching and non-matching lines are printed. The default color can be selected via the $HIGHLIGHT_COLOR environment variable. The command-line option takes precedence. Passing -i or --ignore-case will enable case-insensitive matching. If your pattern begins with a dash ('-'), you can pass a '--' argument after any options and before your pattern to distinguish it from an option.
从脚本的用法中我们可以看到,它通过标准输入接收文本,并使用给定的模式和颜色对文本进行高亮显示。如果未指定颜色选项,则默认为“bold red”。可以通过设置环境变量$HIGHLIGHT_COLOR来选择默认颜色,命令行选项优先级更高。还可以通过使用选项“-i”或“--ignore-case”来启用不区分大小写的匹配。
highlight脚本的作者提到,可以通过将多个highlight的调用通过管道连接起来,来实现多个颜色的覆盖。具体实现方法不在文章中提及。
highlight脚本的问题是无法直接实现多个颜色的覆盖,解决方法是通过将多个highlight的调用通过管道连接起来。在每次调用highlight时,可以通过选项“--color”指定不同的颜色。