美文网首页
开发一坑之查找日志

开发一坑之查找日志

作者: atsukodan | 来源:发表于2019-01-28 22:23 被阅读10次

不知道大家有没有过这样的经历,写出来的接口被别人调用,明明自己测试的没有问题,但别人总是出错,并且因为不能正面交谈,很难定位出错的点;或者是统计访问总数时,两边统计的总数会有差的天差地远的时候,每每到这个时候,不管再怎么不愿意,我们总要从别人访问我们接口或者系统的源头开始排查问题,既是 access.log 或者 error.log,因为遇坑太多,本渣渣员在这里记录下自己翻日志的一些过程。

对于查找日志,首先第一要务就是找到 log 文件的位置,这个位置一般写在服务器的配置文件中,以我常用的 nginx 说明,可以用以下命令找到 nginx 的安装目录。

whereis nginx
ps -ef | grep nginx
nginx -t

以上三个命令都是我常用来查找 nginx 安装目录的命令,一般能找到 conf 文件夹,以 .conf 结尾的文件都是 nginx 的配置文件,这个因每个服务器的配置不同而不同,但都是大同小异的,打开配置文件,找到以下的位置就能明确 access.log 的位置了。

accesslog位置.png
之后,就是开启在一堆访问中找到自己要的访问请求的时候了。这时候,千万别傻乎乎的直接用 cat 命令直接打开,一个正常的网站访问有可能十分大,直接打开是会被闪瞎眼的,请谨慎的使用 more 或者 less 命令,当然首推 less ,它跟 more 命令不同的就是它可以向前或者向后浏览文件,而 more 命令只能向前浏览

当然,我们肯定不能看每一条命令都去确认是不是自己自己需要的访问请求,第一步肯定是根据关键字筛选出自己的所需的访问范围,无疑最常用到的就是 grep 命令了,这个强大的文本搜索工具能够快速的将匹配的行打印出来,而且能够在筛选的结果继续筛选,能让我们将搜索定位到一个比较精确的范围,而且有很多方便的选项,这个大家可自行查询。
下面的命令就是在 access.log 文件中查找包含 aa 字符串的行,并在此基础上查找包含 bb 字符串的行。

grep 'aa' access.log | grep 'bb'

如果日志已经被打包压缩了,也有相似的 zgrep 命令供我们使用,使用的方法是和 grep 一样的。

之后,可能会存在重复访问的情况,为了减少行数,你可以选择去重,直接使用 uniq 命令就可以做到,十分简单便捷,但这里就存在着一个坑。
下面是一条访问请求,大家可以看一下。

访问请求.png
从上面的请求我们可以看到,每个访问都是带着时间的,直接对请求的数据去重其实完全没有用,这里你可以选择将主要的访问请求截取出来再做去重,这时候就要祭出 awk 命令了,这是一个文本和数据处理的命令,最大的优势就是十分灵活,这里我小小介绍一下它的基本操作。
以以上的访问请求作例子,我们看出来这是可以用空格作为分隔符截取文本的,以空格截取后,第6段就是我们所需的数据了。
awk -f ' ' '{print $6}'

这样我们就能得到所要的请求了,是不是十分方便。将上面所有命令综合起来使用就是

grep 'aa' access.log | grep 'bb' | awk -f ' ' '{print $6}' | uniq | less

当然如果你还需要统计自己千幸万苦筛选出来的行数,可以直接使用文件命令 wc

grep 'aa' access.log | grep 'bb' | awk -f ' ' '{print $6}' | uniq | less wc -l

如你所见,linux 下有许多好用的命令,作为一个成长中的程序员,我们也许不能立刻将所有的命令都记住并熟练使用,但我们要结合自己在工作中的需求将命令用起来就到达一定的高度,希望我的小小经历能让大家记住这几个好用的命令。

欢迎关注微信公众号 乱点技能树的小猿
日常发布初出茅庐程序员一些胡言乱语以及编程资源,漫漫编程路,希望我们一起进步!

欢迎大家关注

相关文章

  • 开发一坑之查找日志

    不知道大家有没有过这样的经历,写出来的接口被别人调用,明明自己测试的没有问题,但别人总是出错,并且因为不能正面交谈...

  • Java日志中最全面的框架介绍

    在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此...

  • mpvue坑点记录

    在入坑小程序的日志中,原生开发,wepay开发,mpvue开发,tato开发还是uni-app,其实框架还是因人而...

  • HEXA娱乐开发日志技术点006——日拱一卒拱歪了

    HEXA开发日志目录上一篇 HEXA娱乐开发日志技术点005——死而复生之Gstreamer推流 前言 更新 虽然...

  • android 崩溃日志收集以及上传服务器

    前言 一般情况下app开发完成最后一道工序就是日志收集、奔溃信息查找,我们需要根据打印的错误日志来定位,分析,解决...

  • 如何优雅的写日志

    前言 在代码中编写日志是日常开发中的基本要求,记录日志一方面是方便日后通过日志能够查找问题原因,另一方面也可以用于...

  • 微前端:qiankun 主应用与子应用之间的跳转

    这是一个我在开发时遗留的坑,之前一直没填,刚好最近有时间,网上查找了一些资料,把这个坑给填了!!! 具体需求: 一...

  • iOS DYSM分析友盟错误信息无标题文章

    前言:有很多公司利用友盟来统计错误崩溃日志,方便开发人员查找错误的位置,但是反馈的日志是无法确定到底是哪里发生崩溃...

  • iOS之DYSM分析友盟错误信息

    前言: 有很多公司利用友盟来统计错误崩溃日志,方便开发人员查找错误的位置,但是反馈的日志是无法确定到底是哪里发生崩...

  • Linux 日志查看命令行

    1 grep 命令 (1)查找匹配关键字所在行的日志 (2)查找匹配关键字所在行及上下 n 行的日志 (3) 查找...

网友评论

      本文标题:开发一坑之查找日志

      本文链接:https://www.haomeiwen.com/subject/kfbzjqtx.html