关于linux:着色尾部输出

Colorize tail output

我一直在努力让服务器初创公司的尾部更具可读性。 我当前的命令过滤掉了启动时的大部分INFO和DEBUG消息:

1
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,但幸存的唯一颜色是管道中的最后一个命令。

这样做有一个班轮吗? 甚至是很多班轮?


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

我想我不需要解释如何grep,sed等点是颜色吧?

见下文,这将使

1
2
3
WARN yellow
ERROR red
foo   green

这是一个例子:

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

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

看到结果:

enter image description here


我多年前写过一个剧本。通过将highlight的连续调用相互交错,您可以轻松覆盖多种颜色的情况。

来自README:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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.


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

1
grc tail -f /var/log/syslog

它为syslog输出着色,因此很容易发现错误(通常标记为红色)。

在这里找到工具:

https://github.com/garabik/grc

(它也可用作最常见的linux风格的包)。


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

enter image description here

对于PHP是这样的:

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

关键点是使用Ctrl-v ctrl- [输入绿色^ [在插入模式下在vim中,直接输入^ [不起作用。

enter image description here

更多信息在这里


我使用的是我攻击的版本:
python日志观察者