stdout log日志实时高亮显示

开发调试stdout log日志实时高亮显示

高亮显示

其实就是把特定的关键词搜索出来替换为 ANSI escape code

  1. 正则替换, perl -pe 's/;/;/g'
  2. egrep 关键词替换 egrep "fatal|error|warning|info|debug" -A10 -B10 --color=auto
perl 的方式可以指定不同的关键词不同的颜色,egrep 自定义颜色估计很麻烦。

配合linux管道 实际测试

创建一个文本文件

vim test.txt
输入如下内容:

error
xxxx
bbb
wr

fatal
info
debug
dkjk
info
error
warning
info
info

stdout log日志实时高亮显示_第1张图片

perl -pe 正则替换关键词

cat test.txt  | perl -pe 's/(fatal)/\e[0;41;37m$1\e[0m/g; s/(error)/\e[1;31m$1\e[0m/g; s/(warning)/\e[1;33m$1\e[0m/g; s/(info)/\e[1;32m$1\e[0m/g; s/(debug)/\e[1;34m$1\e[0m/g; s/(wechat)/\e[1;35m$1\e[0m/g'

效果:

stdout log日志实时高亮显示_第2张图片

egrep

cat test.txt | egrep  "fatal|error|warning|info|debug" -A10 -B10 --color=auto

效果:

stdout log日志实时高亮显示_第3张图片

stdout log 处理

我们以 golang程序为例

go test -v  | egrep "fatal|error|warning|info|debug" -A10 -B10  --color=auto

go test -v | perl -pe 's/(fatal)/\e[0;41;37m$1\e[0m/g; s/(error)/\e[1;31m$1\e[0m/g; s/(warning)/\e[1;33m$1\e[0m/g; s/(info)/\e[1;32m$1\e[0m/g; s/(debug)/\e[1;34m$1\e[0m/g; s/(wechat)/\e[1;35m$1\e[0m/g'
go run main.go | ... 跟上面一样处理。 golang有一个这个包 github.com/fatih/color,可以直接在程序中就这样子输出,用了一段时间,感觉日志还是只做日志的事情,不要搞得花里胡哨的,要 review 日志的时候,用这两种方式来过滤, 或者丢到 ELK里面去。

这个就不贴图了,跟用tail -f -n 50 /usr/local/var/postgres/log/postgresql-2018-05-24_000000.log | egrep "STATEMENT|LOG" -A10 -B10 --color=auto 以及上面的 cat 效果都是一样的。

终端控制台字体颜色

echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m 黄色字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
 

echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"

详细说明:

\e[F;B;Om

\e 转义字符开始,ESCASCII 码用十进制表示就是 27,等于用八进制表示的 033

  • \e\033 声明了转义序列的开始
  • [ 开始定义颜色。
  • F 为字体颜色,编号30~37
  • B 为背景色,编号40~47
  • O 为特殊意义代码
  • 它们的顺序没有关系。
  • m 是标记
  • m 后面不用跟空格,是所定义的彩色字和背景

颜色表

    前景 背景颜色
    -------------------------
    30 40 黑色
    31 41 红色
    32 42 绿色
    33 43 黄色
    34 44 蓝色
    35 45 洋红 
    36 46 青色
    37 47 白色

    特别代码意义
    -------------------------
    0 OFF
    1 高亮显示
    4 underline
    5 闪烁
    7 反白显示
    8 不可见

参考资料:

  • 让log中的关键词过滤的酷炫
  • 控制台输出颜色控制(Console 模式下的颜色显示)
  • Perl中正则表达式用法总结

你可能感兴趣的:(color,console,golang,shell,perl)