29

我一直在努力让 tail 对于服务器初创公司更具可读性。我当前的命令从启动中过滤掉大部分 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,但唯一幸存的颜色是管道中的最后一个命令。

有没有一个班轮可以做到这一点?甚至是多班轮?

4

6 回答 6

32

是的,有办法做到这一点。也就是说,只要您的终端支持ANSI 转义序列。这是存在的大多数终端。

我想我不需要解释如何 grep、sed 等。点颜色对吗?

见下文,这将使

WARN yellow
ERROR red
foo   green

这是示例:

kent$ echo "WARN
ERROR
foo"|sed 's#WARN#\x1b[33m&#; s#ERROR#\x1b[31m&#; s#foo#\x1b[32m&#'

注意:\x1bESC字符 ( ^VEsc) 的十六进制。

查看结果:

在此处输入图像描述

于 2013-02-04T17:22:48.853 回答
8

几年前我为此写了一个脚本highlight您可以通过管道对彼此的连续调用轻松覆盖多种颜色的情况。

从自述文件:

Usage: ./highlight [-i] [--color=COLOR_STRING] [--] <PATTERN0> [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.
于 2014-03-17T19:27:06.953 回答
5

多年来,我一直在使用一个名为 grc 的工具。奇迹般有效。它为许多标准日志输出和格式提供了一些非常好的模板,并且很容易定义您自己的模板。我经常使用的一个命令是

grc tail -f /var/log/syslog

它将系统日志输出着色,因此很容易发现错误(通常标记为红色。

在这里找到工具:

https://github.com/garabik/grc

(它也可以作为大多数常见 linux 风格的包提供)。

于 2019-01-18T06:24:23.397 回答
0

我使用了我破解的一个版本: python log watcher

于 2013-02-04T17:13:14.137 回答
0

您可以创建彩色日志,而不是使用复杂的命令。

在此处输入图像描述

对于php是这样的:

echo "^[[30;43m".$ip."^[[0m";

关键是在vim的insert模式下使用Ctrl-v ctrl-[输入一个绿色的^[,直接输入^[是不行的。

在此处输入图像描述

更多信息在这里

于 2019-01-18T02:04:08.087 回答
0

我写了TxtStyle,一个用于为日志着色的小实用程序。您定义正则表达式以在~/.txts.conf文件中突出显示:

[Style="example"]
!red: regex("error")
green: regex("\d{4}-\d\d-\d\d")
# ...

然后应用样式:

txts -n example example.log

或者你也可以通过管道输出

tail -f example.log | txts -n example

在此处输入图像描述

于 2020-12-18T16:49:42.403 回答