cat日志 搜索_大日志,看我如何对付你

2206881b998ba2a92885a6d0cf8831c0.png

      在服务器接口测试中,我们经常会和各种日志打交道。一旦测试时服务端出现了问题,而单凭服务端的日志又不能发现问题原因的时候,往往开发要向我们测试人员询问客户端这边的情况,希望看看我们能不能提供一些有用信息,如错误返回内容,错误发生时间,哪些用例会出现问题等等。这时就需要我们来查找测试时的日志,从中筛选出有用的信息。

      筛查日志这件事,根据情况不同,采用的方法也会有所不同。比如日志很小,至多几千行这样的情况,我们完全可以使用一般的文本编辑器打开,直接查找所需内容即可。而像一些“大型”日志,尤其是长时间稳定性测试所产生的日志,动辄可能会有几个g,几十g,再用编辑器打开显然不够现实。这时,我们可以采用其他的一些查找方法,在不打开日志文件的情况下,较为快速地进行筛选。下面我就来说说几个经常会使用到的命令(方法)。

一、more/less 命令

       more和less命令在使用上十分相近,都是用分页查看文本的方式,每次只显示一定行的文本,避免像cat那样被大量的文字快速刷屏,同时支持搜索,可以在文件中搜索某个关键词并实现定位。more和less有一些细微不同的地方,体现在参数设置上。总体而言,less似乎更适合对于日志的筛查,可以进行向前或向后双方向的搜索,并且可以按方向键逐行前后滚动,而more只支持向后查找和向后翻页或滚动。

       基本命令格式:

more/less example.log

      搜索关键词方法:

      输入命令后按"/",输入关键词后回车即可定位至关键词第一次出现的位置,此时按n键可切换至下一次出现的位置,使用less时,按N(shift或大写锁定+n)键返回上一次出现的位置。

       优点:

       可以自动定位关键词出现的位置,并显示关键词前后的文本内容,使用起来比较方便。

       缺点:

       搜索速度较慢,文件特别大的话要等很久才能搜索到。

       应用举例:

       查看日志文件从某时刻开始的内容

       首先使用more命令打开一个日志文件

more 2019-08-05_1.csv

      显示结果如下:

e921efc73bf697d344e440c779d4ca99.png

     可以看到日志的内容很多,此时我们关注日志中的时间,比如我想查看从04:01:00 GMT开始的日志,那么就键盘输入:

/04:01

       按下回车,就会自动切换至我们想要的位置:57deaf9554921693c08fa939a6fcf81e.png

      可以看到,日志内容从04:01开始了。

二、grep 命令

      grep命令是linux下最好用的命令之一。grep用来筛选内容的速度应该是最快的,这点没有之一,大到几个g的文件,几秒就可以完成对单一关键词的筛取,可谓是查找大文件的“神器”,而且grep命令格式十分简单,常用的搜索功能只需三个参数即可完成。

      基本命令格式:

grep keyword example.log

      搜索关键词方法:

     在keyword位置设置想要搜索的关键词,按下回车,即可将所有包含该关键词的行显示出来。

       优点:

       快速,可批量筛选出含有关键词的全部文本行。

       缺点:

       如果关键词在文本中出现较多,无法快速定位至某一次关键词出现的位置,依然会出现刷屏效果。

      拓展应用:

      在命令中添加-A,-B,-C参数,可分别获取某关键词出现位置后面、前面、前后n行的内容:

grep -A|B|C n keyword example.log

       应用举例:

       查看日志文件某时刻起向后10行的内容

       使用如下命令:

grep -A 10 '04:01:41' 2019-08-05_1.csv

      结果显示:

c00aa95effc6216ac16c5be904d43150.png

     可以看到,从日志中成功筛选出了04:01:41 GMT时刻后面10行的日志内容,比more/less命令搜索速度快了不少,而且内容更加简洁,只包含这部分的内容信息。

三、head/tail 命令

      head和tail命令是功能近似而作用位置相反的两个命令,head命令用来从开头读取文本,tail命令则是从尾部读取文本。当我们不关注日志中间的一大坨内容,只关注开头或结尾的部分内容时,head和tail命令可以说是最好的解决方案。

      基本命令格式:

head/tail -n example.log

      使用方法:

      设置需要从文件开头/结尾查找的行数(n),即可显示对应结果。

       优点:

       方便实用,尤其是tail,可以从尾部读取文件。

       缺点:

       单独使用不能查找关键词。

      拓展应用:

     1、head/tail与grep命令结合使用

      如果需要从文件开头或结尾一定范围内查找关键词,那么head/tail与grep结合使用就再方便不过了,使用管道符连接两个命令即可:

head/tail -n example.log | grep keyword

      反过来,也可以获取含有某关键词所有行中的前/后n个:

grep keyword example.log | head/tail -n

      2、tail -f 命令

       在测试过程中,我们有时可能需要监测一下当前日志的输出情况,而由于日志在测试程序启动时已经定向到了某个文件,没有给到标准输出,这时我们可以使用tail -f这个十分简便的命令,获取和日志“上屏”相似的效果,随着日志文件的不断更新,该命令也会将更新的内容给到标准输出,同时不影响日志文件的记录:

tail -f example.log

      此外,该命令结合grep使用,更可以获得实时筛选日志信息的功能,将简化版、筛取版的日志记录或输出。

       应用举例:

       查看日志文件前1000行中,测试的时间记录

       使用如下命令:

head -1000 2019-08-05_1.csv | grep date

      结果显示:

f00a9b56d4c895182e3c5ce2df944d9c.png

      可以看到,这样准确从日志中筛选出了时间记录。

      如此,我们还可以进一步拓展命令,利用wc -l来统计时间记录的个数,完整命令如下:

head -1000 2019-08-05_1.csv | grep date | wc -l

     结果显示:

a8a8e0e162104fee23ffc9902d8dd497.png

     可以看到,一共有31个时间记录。

结束语

      好了,以上就是本期介绍的几个在日志筛选方面的实用命令,掌握了这些命令,从此可以不再惧怕那些个大文件了。

73245895de34dc1f1fad5d82e8a88a94.png

有任何想说的话,都可以发送内容到“搜狗测试”公众号,我们一起聊聊~

6320377c6b0ffc91cf7b02521727f0e8.png5fc826489b6d3095d2e2f6e019b1ef3d.png

欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试。

e42b501a4c144ee5576a0569379664f4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

加载gif动图_GIF生成神器——ScreenToGif

每次需要做一个动图展示时,总是感觉很头疼。截图吧,需要的图片太多;录视频吧,文件太大;做动图吧,太麻烦。今天推荐的这个软件或许能够解决大家这个困惑,今天推荐的是动图生成神器——ScreenToGi…

java 修改最大nio连接数_关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?...

关于同步、阻塞的知识我之前的文章有介绍,所以关于流用到这些概念与之前多线程用的概念一样。下面具体来看看java中的几种流IO/BIOBIO就是指IO,即传统的Blocking IO,即同步并阻塞的IO。这也是jdk1.4之前的唯一选择,依赖于ServerSocket实现&am…

python扫雷 广度优先_广度优先搜索(BFS)解题总结

定义 广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。 简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。 如果所有节点均被访问,则算法中止。 BFS同样属于盲目搜索。 一般用队…

python裁剪图片并保存_python – 如何从图像中剪切轮廓并将其保存到新文件中

大家好,这是我的第一个问题所以请保持温和.我有一个计算机视觉领域的项目,我是新的,我会很感激一些帮助.我有一个pcb的图像,我的(首先)任务是从背景中切断电路板并将其保存到新文件.如果结果只是没有灰色背景的普通pcb,那就没问题了. 我到目前为止尝试的是,首先使用阈值将图像转…

flash代码_Flash如何对制作文件进行优化

对FLASH进行优化分为两方面,一方面是代码上的优化,主要是通过优化提高FLASH性能,降低CPU占用和内存使用。另一方面是资源的优化,这方面的优化是为了减小编译后的文件大小以及制作文件的大小,因为如果不进行相应的优化&…

deepin系统转为windows_windows系统下安装深度系统deepin

前期准备DiskGenius(用来扩展分区)deepin-20-amd64.iso(深度系统镜像文件)相关文件下载首先下载安装时要用的工具,分别为:DiskGenius , UltraISODiskGenius是一款磁盘工具,创建系统分区。UltraISO是用来打开系统光盘镜像文件工具。Win8/8.1/10无需下载Ul…

软件开发模型_QT开发(二十三)——软件开发流程

一、软件开发流程简介软件开发流程是通过一系列步骤保证软件产品的顺利完成,是软件产品在生命周期内的管理学。软件开发流程的本质是软件开发流程与具体技术无关,是开发团队必须遵守开的规则。二、常见软件开发流程模型常见的软件开发流程模型包括即兴模…

python3.6.2用pyinstaller3.4报错_OceanBase 2.2 版本体验:用 BenchmarkSQL 跑 TPC-C

OB君:好消息!「 OceanBase 2.2 版本 」正式上线官网啦!(点击阅读原文即可直接下载)OceanBase 2.2版本是成功支撑2019年天猫双11大促的稳定版本,同时也是用于TPC-C测试且荣登TPC-C性能榜首的版本。我们将在接…

hive窗口函数_Hive sql窗口函数源码分析

在了解了窗口函数实现原理 spark、hive中窗口函数实现原理复盘 和 sparksql比hivesql优化的点(窗口函数)之后,今天又撸了一遍hive sql 中窗口函数的源码实现,写个笔记记录一下。简单来说,窗口查询有两个步骤:将记录分割成多个分区…

容大打印机ip修改工具_M1芯片版Mac无法连接打印机怎么办?

文末有优惠券在入手了M1芯片版MacBook Pro后,昨天我打算连接一下实验室的打印机。这个打印机的型号是HP LaserJet Professional M1213nf MFP,在同一个局域网内通过搜索IP即可连接。在我的旧设备2015款MacBook Air上,很轻松就连接了打印机。可…

语音对讲软件_三款语音转文字工具,语音输入,高效转换,准确率高

关于语音转文字的软件我在之前讲了很多,有些人听了也用了,效果不错,有些人看了就忘了,主要是不知道用它干嘛,其实语音转文字的软件主要功能就是为了让自己在写作的时候可以减少时间,提高效率,其…

野火stm32呼吸灯程序_说一说STM32启动过程

STM32上电后是怎么启动的?main函数之前单片机都做了些什么?带着这些疑问我们开始进入游戏。。。。。首先,开局一张图,过程全靠编,如有说错的地方望能指正启动大致流程1- 上电启动或者硬件复位2- 单片机从0x00地址开始执…

apache启动失败_请检查相关配置.√mysql5.1已启动._1、Apache启动失败,请检查相关配置-百度经验...

前几天电脑系统崩溃了,后边到服务中心重新恢复了系统,但是回来使用APMServ 5.2.6发现:1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。系统的各种服务我都检查过了,都是正常开启的,百思不得其解,后边在百度上搜索一篇文章有个例子照做了以后结果成功了。---------------…

职业规划纵向横向_收下这份《职业规划喂饭式指南》

果不其然!上篇文章发布后,我收到了被拿来举反例的网友小哥的抗议~~~讲道理,最后他拿到的Offer还是十分不错的,从此以后我的朋友圈又多了一位第一手保真瓜主,他好我也好~那么本期《职业规划喂饭式指南》来喽&#xff01…

javascript字典中添加数组_如何在 JavaScript 中更好地使用数组

在 freeCodeCamp 社区阅读原文。本文短小精悍,我保证。在过去的数个月里,我注意到在我审阅的 pull request 中有四个(关于数组使用的)错误经常出现。同时,我自己也会犯这些错误,因此有了这篇文章。让我们一…

mysql join图解_MySQL中Join算法实现原理分析[多图]

在MySQL 中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join。顾名思义,Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据&#…

mysql多线程使用一个链接_探索多线程使用同一个数据库connection的后果

在项目中看到有用到数据库的连接池,心里就思考着为什么需要数据库连接池,只用一个连接会造成什么影响?(只用一个connection)?1 猜想:jdbc的事务是基于connection的,如果多线程共用一个connection,会造成多线程之间的事务相互干…

vs中四点画矩形的算法_中考热点,初高中衔接之倒角利器四点共圆

初中数学课程标准修改后,教材中四点共圆知识已经删除掉了,但这样一件强悍且使用简单的武器,我们还是有必要去了解的,近年来对于压轴题以几何为核心的考区来说,有时用到解题更为简洁方便,由此应该理解掌握。…

phpnow mysql字符集_使用PHPnow搭建本地PHP环境+创建MySQL数据库

要想学习WordPress建站,在本地搭建PHP环境是十分必要的,在以后的建站日子里,你可以使用这个环境来进行wordpress的程序学习、调试等工作,等你熟悉了wordpress以后,再购买域名和空间,真正开始你的建站之旅。…

wps如何保存最终状态_如何使得打开word文件显示最终的修改状态

展开全部 在日常工作中,经常为了保护文档而将其设置成最e68a84e8a2ad3231313335323631343130323136353331333363376366终状态,设置文档为最终状态,则是表示已完成这篇文档的编辑,这是文档的最终版本。如果文档被标记为最终状态,则状态属性将设置为“最终状态”,并且将禁用…