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

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

实践中用到的一种方式:

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

用到的命令:

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

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

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

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

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

cat userId_2017--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

提取日志中出现的userId或其他信息的更多相关文章

  1. 提取日志中的json请求发送到另外一台机器

    将日志中的json请求提取,并且发送到另外一个机器上: for i in ` cat impression.log.2016-04-08-10 |awk -F"\t" ' {pri ...

  2. 从输出日志中提取接口的入参和返回做为用例导入到excel中

    1  背景 接口用例已经在项目中的yml文件中编写,但是yml文件不能做为交付文档用,本文对工作中从接口输出日志中提取用例信息,并导入到excel文件中做了总些 2  工具 idea,notepad+ ...

  3. linux服务端日志中截取自己所需要的部分

    近期开发一个图片处理的业务,涉及base64字符串解析的问题,为方便与友商间接口调试,日志中保存Base64.日,想想就肝儿疼,记录下来容易,取的时候难.为准确提取,配合两条命令即可. 1.获取日志所 ...

  4. Python统计日志中每个IP出现次数

    介绍了Python统计日志中每个IP出现次数的方法,实例分析了Python基于正则表达式解析日志文件的相关技巧,需要的朋友可以参考下 本脚本可用于多种日志类型 #-*- coding:utf-8 -* ...

  5. 本地多张图片采用jmeter上传到ftp服务器的方法和获取服务器日志中某些关键字的基本方法

    测试需求: 本地图片上传到ftp服务器里和另外两台不同算法比对服务器进行比对,得出漏检和误检结果:这实际属于功能测试范畴. 测试思路: 第一种方法:使用实际场景的摄像机抓拍图片上传到服务器,用录屏软件 ...

  6. 在linux中使用shell来分析统计日志中的信息

    在运维工作中,要经常分析后台系统的日志,通过抓取日志中的关键字信息,对抓取结果进行统计,从而为监控结果提供基础数据.下面的shell演示了如何从大量的日志中取得想要的统计结果.其中展示了各种有趣的命令 ...

  7. 统计日志中ip出现的次数

    grep -r 'GET /weixin/weixin_izp/index.html' ./chunyun.access.log > ~/access.log cat access.log |a ...

  8. 使用Java Stream,提取集合中的某一列/按条件过滤集合/求和/最大值/最小值/平均值

    不得不说,使用Java Stream操作集合实在是太好用了,不过最近在观察生产环境错误日志时,发现偶尔会出现以下2个异常: java.lang.NullPointerException java.ut ...

  9. ES & Filebeat 使用 Pipeline 处理日志中的 @timestamp

    使用 Pipeline 处理日志中的 @timestamp Filebeat 收集的日志发送到 ElasticSearch 后,会默认添加一个 @timestamp 字段作为时间戳用于检索,而日志中的 ...

随机推荐

  1. PHP常用的转义函数

    1. addslashes addslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有 ...

  2. scrapy-logging

    import logging logger = logging.getLogger(__name__) # 当前文件位置 logger.warning('haha') # debug info 201 ...

  3. Mac ssh 免密码登录 Mac 或者 Linux

    最近在 Mac上操作另一台 Mac 和 Linux 服务器,每次输密码太麻烦.所以直接设置 ssh 免密码登录,省去输入密码的过程.先在本机执行 ls ~/.ssh 若不存在 id_rsa,id_rs ...

  4. java学习--java源文件

    java源文件以“java”为扩展名.源文件的基本组成部分是类(class) 一个源文件中最多只能有一个public类.其他类(如抽象类,default类即省去修饰符的类,接口)的个数不限. 如果源文 ...

  5. 记一次vcsa6修复过程

    一. 某天发现一台vmware  vCenter Server Appliance services 6偶尔能登陆了,但极不稳定,连shell都偶尔能进...... 然后利用各种手段想方设法进到she ...

  6. tomcat双击startup.bat启动时闪退

    tomcat之前用的好好地没有问题,今天重启一下就发现双击startup.bat一闪而过,接着就没有任何动静了,tomcat无法启动啦? 于是网上搜了一堆tomcat闪退的解决办法,其中有说是没有读取 ...

  7. tensorflow报错error,tf.concat Expected int32, got list containing Tensors of type '_Message' instead

    参考:https://stackoverflow.com/questions/41813665/tensorflow-slim-typeerror-expected-int32-got-list-co ...

  8. 简单实用的分页类-python

    django自带的分页虽然挺好,但是就想自己弄个通用的 自己写了个分页的类,用的是python,   其他语言改下语法就能用了. #定义好类.class pagemanage: def __init_ ...

  9. SpringCloud-day01-简介

    1.spring cloud简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载 ...

  10. day39 mysql数据库基本操作

    什么是数据库 用来存储数据的仓库 数据库可以在硬盘及内存中存储数据 主要学习硬盘中存储数据,因为内存中的数据总有一天会丢失 数据库与文件存储数据区别 (公司的开发是综合内容的) 数据库本质也是通过文件 ...