在做测试时,我们经常会遇到日志分析的统计工作,那么如何高效的完成日志分析功能呢?这里以统计研发同学应用日志中的api耗时情况为例进行讲解。
通常思路如下:
1.利用shell脚本搜索(服务器端直接搜索日志,以grep命令为例)
2.编码解析(不在本文讨论范围)
3.通过文本编辑器搜索(windows 系统中搜索日志,以notepad++为例)
需求1:模拟统计日志中消耗时长在300ms左右的日志记录个数
NotePad++
搜索>查找
选中底部的“正则表达式”,输入正则3\d{2},点击右侧的计数,即可统计到搜索结果。
其中\d 在正则表达中表示数字,{2}表示出现两次,\d{2}表示任意两位数,加上前面的3则表示以3开头的任意三位数。
shell脚本
使用下面的脚本可以轻松统计出上述文档中查找结果出现的次数
grep -o '3[0-9]\{2\}' test.log |wc -l
结果显示 1
这里需要注意一下,shell 正则中不支持\d,因此用[0-9]代替,表示0-9中的任意数字
grep
其中grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
使用grep -o '3[0-9]\{2\}' test.log ,输出结果是
340
grep -o只显示匹配的字符串;如果一行中有多个匹配结果,则会换行输出匹配到的结果 ,如果文档中内容为
time:340,390
使用grep -o '3[0-9]\{2\}' test.log ,输出结果是
340
390
wc -l解释
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
wc -l 是统计行数的含义
管道符“|”
Linux 管道使用竖线|连接多个命令,这被称为管道符,它将前面一个进程的输出直接作为下一个进程的输入。
grep -o '3[0-9]\{2\}' test.log |wc -l 的含义是把grep -o '3[0-9]\{2\}' test.log 搜索到的内容作为wc -l统计内容的输入。
需求2:模拟统计消耗时长在700-900左右日志记录个数
NotePad++
正则表达如下,如果大家想了解更多的正则表达式知识,在网上随意搜索即可
shell脚本
使用下面的脚本可以轻松统计出上述文档中查找结果出现的次数
grep -o '[7-9][0-9]\{2\}' test.log |wc -l
好了,以上就是搜索日志的一些常用技巧,相信大家了解以后,在实际工作中查看日志的效率一定会大幅提升!原创不易,如果你喜欢本文,请帮忙点赞转发!