痛点
在服务器直接通过 tail
命令滚动输出查看日志内容时,会存在以下的问题:
- 共用一套测试环境时 ,存在交叉调用的日志内容;
- 大多Shell工具搜索只能高亮单个关键字;
- 日志内容杂乱,多个关键字需肉眼定位和比对。
手写脚本
针对上述的问题,可以通过 grep
的多关键字过滤,加上 perl
对指定关键字输出对应的颜色。
1
| tail -f /export/log/biz/biz_detail.log | grep -E -B8 -A11 '江苏省联社设备反欺诈预测评分\(标准版\)jar 包入参' --line-buffered | perl -pe 's/(江苏省联社设备反欺诈预测评分\(标准版\))|(数据源中文名:设备信用模型分\(换签版\))|(633004529412624)|(01028898029254162532035)|("1.0")|(bj_score)|(label)|(psce_fraud_jsrcu_score)|(ppre_fraud_jsrcu_label)|(0721d10b33c188d8e45c1369a8b3b01de194a4c9862d486c9d27c3a35845118a)|(hash_type)|(response={tags={)|(jar 包入参)|(sm3)|(8a67f57383173fb1176492184d16d1a4)|(md5)|(5948f86545d42883837ef15e6aa75c5f82c24c25a1bc5de0109b310877afac6d)|(sha256)/\e[1;31m$1\e[1;31m$2\e[1;31m$3\e[1;31m$4\e[1;31m$5\e[1;34m$6\e[1;35m$7\e[1;34m$8\e[1;35m$9\e\e[1;32m$10\e[1;32m$11\e[1;32m$12\e[1;32m$13\e[1;32m$14\e[1;32m$15\e[1;32m$16\e[1;32m$17\e[1;32m$18\e[1;32m$19\e[1;32m$20\e[0m/g'
|
注意: 空格需要使用反斜线(\
)转义
脚本说明
需要高亮的关键字:
1
| perl -pe 's/(江苏省联社设备反欺诈预测评分\(标准版\))|(数据源中文名:设备信用模型分\(换签版\))|(633004529412624)|(01028898029254162532035)|("1.0")|(bj_score)|(label)|(psce_fraud_jsrcu_score)|(ppre_fraud_jsrcu_label)|(0721d10b33c188d8e45c1369a8b3b01de194a4c9862d486c9d27c3a35845118a)|(hash_type)|(response={tags={)|(jar 包入参)|(sm3)|(8a67f57383173fb1176492184d16d1a4)|(md5)|(5948f86545d42883837ef15e6aa75c5f82c24c25a1bc5de0109b310877afac6d)|(sha256)
|
注意:每个括号里的关键字对应下面的$1到$n。
需要高亮的关键字颜色:
1
| \e[1;31m$1\e[1;31m$2\e[1;31m$3\e[1;31m$4\e[1;31m$5\e[1;34m$6\e[1;35m$7\e[1;34m$8\e[1;35m$9\e\e[1;32m$10\e[1;32m$11\e[1;32m$12\e[1;32m$13\e[1;32m$14\e[1;32m$15\e[1;32m$16\e[1;32m$17\e[1;32m$18\e[1;32m$19\e[1;32m$20\e[0m/g
|
注意:$1即匹配关键字的第1个,$2即匹配关键字的第2个,以此类推。$n是根据实际匹配上的顺序定义的。
如果关键字未匹配到,$n的颜色会去匹配第 (n+1) 的关键字。
在Linux终端中,可以使用ANSI转义序列来设置文本的颜色和样式。下面是一些常用的颜色代码:
1 2 3 4 5 6 7
| 红色:\e[1;31m 绿色:\e[1;32m 黄色:\e[1;33m 蓝色:\e[1;34m 紫色:\e[1;35m 青色:\e[1;36m 白色:\e[1;37m
|
默认颜色(通常是终端默认的前景和背景颜色):\e[0m
这些颜色代码可以与其他样式代码一起使用,例如:
1 2 3 4 5
| 粗体:\e[1m 斜体:\e[3m 下划线:\e[4m 反显(文本颜色与背景颜色互换):\e[7m 删除线:\e[9m
|
使用这些颜色和样式代码,将它们插入到文本之前,在文本之后添加 \e[0m
来恢复默认设置。
比如,将文本设置为红色粗体,可以使用以下代码:
1
| \e[1;31m\e[1m这是红色粗体文本\e[0m
|
这将使文本以红色粗体显示,并在文本后面添加 \e[0m
以恢复默认设置。
生成脚本
上面使用了手动编辑的方式来生成脚本,当修改内容多时容易修改错了,并且高亮颜色值也不容易被记忆住。
所以可以将脚本需要修改的内容提取出来,通过页面配置,并自动生成可用的过滤高亮脚本。
上述的页面中,通过将 6 个变量内容提取出来在页面可视化配置:
- 日志地址
- 过滤关键字
- 上色关键字
- 颜色配置
每行匹配1个定义的上色关键字,如果不设置颜色默认是白色:\e[1;37m
- 显示过滤关键字前面几行
- 显示过滤关键字后面几行
通过页面生成直接能在命令行粘贴使用的脚本,简化了编辑脚本的难度,提高了可用性。体验地址:日志多关键字过滤+高亮脚本生成器
使用效果
在使用脚本后,日志的内容得到了过滤并对特定关键字使用了多色高亮来区分。
(本文完)