提取日志中出现的userId或其他信息

项目上线后经常出现需要统计用户数据、接口请求等。完美的情况下,在项目开始前就设计好哪些request、中间过程需要落地到db、或以一定格式存入专门的log中,但也常需要同学们临时去业务日志中grep

大致分为三步:找到包含数据的行、提取出行中需要的数据、输出到文件并提取到本地

实践中用到的一种方式:

zcat /home/机器中的日志路径/logs/finscore.log.gz | grep 'TaskController.queryTaskListApi(..)的请求参数为' | awk -F\' '{print $2}' > machine1_userId_2017-09-04.log

用到的命令:

  • zcat:就是查看压缩文件的内容,如果日志未压缩,直接cat也行
  • grep:找到包含数据的行
  • awk:用法为 awk -F分隔字符 操作,比如awk -F: '{print $2}' 代表将当前数据按照英文冒号进行分割,并将分割后的第二段中的内容输出。需要注意分隔字符的转义。如果不写-F,默认会用空格作为分隔符

 

如果是ssh登录的线上机器,拷贝到本地,还需要在本地这样做:

scp 线上机器地址:machine1_userId_2017-09-04.log /Users/micheal/temp/machine1_userId_2017-09-04.log

scp是有Security的文件copy,基于ssh登录。操作起来比较方便,敲完命令后会提示输入那台机器的登录密码,接着就开始copy了

 

对于提取数据中的精髓:提取,除了awk还有很多方法,比如可以用cut:

cat userId_2017-09-04.log | cut -d \" -f 8 > userId_new_2017-09-04.log

cut命令:

  • -d:分隔符,和awk的-F一样
  • -f:分割后取第几段内容,如果要取多段:可以写 -f2-4,从第二段取到结尾:-f2-,从头取到第四段:-f-4;取第一段和第三段:-f1,3,随意组合(上文中awk中使用的print也有类似的语法,可以随意组合)

 

如果为多台机器,可以配合可分屏的terminal:
mac下推荐iTerm2:http://www.iterm2.com/,打开终端后分屏,然后广播output即可

linux:直接sudo apt-get install terminator

 

转载于:https://www.cnblogs.com/loveCheery/p/7475953.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值