有时候在工作中,我们需要对日志进行处理,这里我对我碰到的一些进行总结
-
提取数据
首先可以打开日志,查看下结构
image.png
这里可以看到日志数据
image.png
我们一般需要拿到访问某个接口的uid,time,app版本,登录手机的平台等信息
首先我们先定位接口的数据:
格式这样:grep 查询的关键字 查询文件
image.pnggrep getArticleInfo ysz-gateway-2018_06_07-1.log
如图,我们拿到了所有这个接口的相关数据,
我们这里需要提取这里的数据比如,我们要uid,这里我们需要管道处理
解释下管道:我的理解大意是前边的结果作为参数传给后边处理,实际用多了,你们就体会到了,grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid
获取到这个接口包含uid的行
image.png
如下图,我们要提取[]里的内容,这里处理方法很多,我一般用awk
image.png
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'
这里awk -F是截取,这里是以data:为分割,输出第二段内容
image.png
和一般的json还差点啥,应该是去掉[],我们这里还是用awk -F解决
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'
然后就推荐使用jq插件了,yum install jq就可以安装了,
我们使用方法,比如要拿到uid,就这么写
继续管道后续
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'
image.png
管道继续,有时候我们要去重,我们可以对uid排序,去重
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'|wc -l 先看下行数
image.png
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'|sort|uniq|wc -l
image.png
可以看到去重以后由145变成了92,
现在就拿到数据了,至于后边数据分析,我们后边会讲到
网友评论