stdout log日志实时高亮显示

Fish · · 1677 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

高亮显示

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

  1. 正则替换, perl -pe 's/<pattern>;/<replacement>;/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

clipboard.png

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'

效果:

clipboard.png

egrep

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

效果:

clipboard.png

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 不可见

参考资料:


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:Fish

查看原文:stdout log日志实时高亮显示

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1677 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传