针对大量log日志快速定位错误地方

电子说

1.3w人已加入

描述


	

	

 

查看服务器、应用运行日志,这是每个程序员必备的工作技能,因为,日志是最好的查找出错问题在哪的途径。如果当服务器爆了,你却连如何定位错误都不知道?那么,这锅你是背定了。。。

今天,我们就针对大量日志记录中,如何快速定位错误?来聊一聊。

针对大量log日志快速定位错误地方

动态查看日志

tail -f catalina.ou  

从头打开日志文件

cat catalina.ou  

可以使用 >nanjiangtest.txt 输出某个新日志去查看

[root@yesky logs]# cat -n catalina.out |grep 717892466 >nanjiangtest.txt

tail/head简单命令使用

[root@yesky logs]# tail -n number catalina.out 查询日志尾部最后number行的日志  
        [root@yesky logs]# tail -n +number catalina.out 查询number行之后的所有日志  
        [root@yesky logs]# head -n number catalina.out 查询日志文件中的前number行日志  
        [root@yesky logs]# head -n -number catalina.out 查询日志文件除了最后number行的其他所有日志  

第一种方式(根据关键字查找出行号)

用grep拿到的日志很少,我们需要查看附近的日志。我是这样做的,首先: cat -n test.log | grep “关键词” 得到关键日志的行号

[root@yesky logs]# cat -n catalina.out |grep 717892466  
13230539        [11:07 1711] INFO nanjiang:Edit Old Article:717892466-2020-11-07 1711  
13230593        [11:07 1715] INFO nanjiangSave Article ID IS:717892466  
13230595        717892466 article.getDisplayTime()1 = 2020-11-07 1611  
13230596        717892466 article.getDisplayTime()2 = 2020-11-07 1611  
13230601        [11:07 1715] INFO 南江 10.10.10.39  edit    article 717892466       编辑文章  

「cat -n catalina.out|tail -n +13230539|head -n 10」

  • tail -n +13230539表示查询13230539行之后的日志
  • head -n 10则表示在前面的查询结果里再查前10条记录
[root@yesky logs]# cat -n catalina.out |tail -n +13230539|head -n 10  
13230539        [11:07 1711] INFO nanjiang:Edit Old Article:717892466-2020-11-07 1711  
13230540        [11:07 1711] INFO Takes:2 ms class com.tmg.cms.manager.dao.article.impl.ArticleContentDaoImpl       getListByArticleId      [NzE3ODkyNDY2]       [int]  
13230541        [11:07 1711] INFO Takes:1 ms class com.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImpl  load      
13230542        [11:07 1711] INFO Takes:0 ms class com.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImpl  load      
13230543        [11:07 1711] INFO Takes:1 ms class com.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImpl  load      
13230544        [11:07 1711] INFO article.getImage3:/uploadImages/2020/312/02/3NXCRK4U3589_2.jpg  
13230545        [11:07 1711] INFO Takes:0 ms class com.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImpl  load     
13230546        [11:07 1711] INFO Takes:2 ms class com.tmg.cms.manager.dao.privilege.impl.UserDaoImpl       getUserByid       
13230547        [11:07 1711] INFO Takes:57 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl     selectSitemapWithoutAudit       [MQ==]  [int]  
13230548        [11:07 1711] INFO Takes:5 ms class com.tmg.cms.manager.dao.forbidword.impl.ForbidwordDaoImpl        getForbidwordBysiteid   [MjI=]  [int]  

第二种方式:查看指定时间段内的日志

首先要进行范围时间段内日志查询先查看是否在当前日之内存在,

grep '11:07 1820' catalina.out  
grep '11:07 1811' catalina.out  

时间范围内的查询

sed -n '/11:07 1820/,/11:07 1811/p' catalina.out   
sed -n '/11:07 18/,/11:07 18/p' catalina.out  

第三种方式:查看日志中特定字符的匹配数目

[root@yesky logs]# grep '1175109632' catalina.out | wc -l  
154  

第四种方式:查询最后number行,并查找关键字“结果”

[root@yesky logs]# tail -n 20 catalina.out | grep 'INFO Takes:1'  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.config.impl.ConfigInfoDaoImpl load   
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTkwOTQ5] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzI0] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzI3] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzMw] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzA5NA==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [Mzc4Mg==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [OTM1MA==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MTE5MDMw] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTQ2MzQw] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTg2NzYy] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzYyMjA=] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.configModule.impl.ConfigModuleDaoImpl getPersonMenuList  

第五种方式:查询最后number行,并查找关键字“结果”并且对结果进行标红

[root@yesky logs]# tail -n 20 catalina.out | grep 'INFO Takes:1' --color  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.config.impl.ConfigInfoDaoImpl load   
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTkwOTQ5] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzI0] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzI3] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzMw] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzA5NA==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [Mzc4Mg==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [OTM1MA==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MTE5MDMw] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTQ2MzQw] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTg2NzYy] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzYyMjA=] [int]  

第六种方式:查询最后number行,并查找关键字“结果”并且对结果进行标红,上下扩展两行

[root@yesky logs]# tail -n 20 catalina.out | grep 'INFO Takes:1' --color -a2  
[11:11 2251] INFO Takes:0 ms class com.tmg.cms.manager.dao.article.impl.ArticleContentDaoImpl getArticlePageNum [NzE4MTM2ODky] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.config.impl.ConfigInfoDaoImpl load [com.tmg.cms.manager.model.config.ConfigInfo]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTkwOTQ5] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzI0] [int]  
[11:11 2251] INFO Takes:0 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzI1] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzI3] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzMw] [int]  
[11:11 2251] INFO Takes:0 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzAzNg==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzA5NA==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [Mzc4Mg==] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [OTM1MA==] [int]  
[11:11 2251] INFO Takes:0 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MTE0MjQ4] [int]  
[11:11 2251] INFO Takes:0 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MTE4MDc4] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MTE5MDMw] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTQ2MzQw] [int]  
[11:11 2251] INFO Takes:0 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTQ3MTIw] [int]  
[11:11 2251] INFO Takes:0 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTY4OTYx] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [NTg2NzYy] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImpl getSitemapTop [MzYyMjA=] [int]  
[11:11 2251] INFO Takes:1 ms class com.tmg.cms.manager.dao.configModule.impl.ConfigModuleDaoImpl getPersonMenuList [com.tmg.cms.manager.model.config.ConfigPersonMenu]  

第七种方式:分页查看,使用空格翻页(使用more/less)

[root@yesky logs]# tail -n 2000 catalina.out | grep 'INFO Takes:1' --color -a2 | more  
        [root@yesky logs]# tail -n 2000 catalina.out | grep 'INFO Takes:1' --color -a2 | less

附加

1.全屏导航
  • ctrl + F - 向前移动一屏
  • ctrl + B - 向后移动一屏
  • ctrl + D - 向前移动半屏
  • ctrl + U - 向后移动半屏
2.单行导航
  • j - 向前移动一行
  • k - 向后移动一行
3.其它导航
  • G - 移动到最后一行
  • g - 移动到第一行
  • q / ZZ - 退出 less 命令

 

审核编辑 :李倩

 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分