开发调试stdout log
日志实时高亮显示
高亮显示
其实就是把特定的关键词搜索出来替换为 ANSI escape code
- 正则替换,
perl -pe 's/<pattern>;/<replacement>;/g'
-
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
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'
效果:
egrep
cat test.txt | egrep "fatal|error|warning|info|debug" -A10 -B10 --color=auto
效果:
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
转义字符开始,ESC
的 ASCII
码用十进制表示就是 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 不可见
参考资料:
有疑问加站长微信联系(非本文作者)