0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

dyquk4xk2p3d 来源:良许Linux 2023-03-20 09:22 次阅读

	

	

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

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

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

动态查看日志

tail-fcatalina.ou

从头打开日志文件

catcatalina.ou

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

[root@yeskylogs]#cat-ncatalina.out|grep717892466>nanjiangtest.txt

tail/head简单命令使用

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

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

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

[root@yeskylogs]#cat-ncatalina.out|grep717892466
13230539 [11:07 1711] INFO nanjiang:Edit Old Article:717892466-2020-11-07 1711 
13230593 [11:07 1715] INFO nanjiangSave Article ID IS:717892466 
13230595717892466article.getDisplayTime()1=2020-11-071611
13230596717892466article.getDisplayTime()2=2020-11-071611
13230601[11:071715]INFO南江10.10.10.39editarticle717892466编辑文章

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

  • tail -n +13230539表示查询13230539行之后的日志
  • head -n 10则表示在前面的查询结果里再查前10条记录
[root@yeskylogs]#cat-ncatalina.out|tail-n+13230539|head-n10
13230539 [11:07 1711] INFO nanjiang:Edit Old Article:717892466-2020-11-07 1711 
13230540[11:071711]INFOTakes:2msclasscom.tmg.cms.manager.dao.article.impl.ArticleContentDaoImplgetListByArticleId[NzE3ODkyNDY2][int]
13230541[11:071711]INFOTakes:1msclasscom.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImplload
13230542[11:071711]INFOTakes:0msclasscom.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImplload
13230543[11:071711]INFOTakes:1msclasscom.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImplload
13230544 [11:07 1711] INFO article.getImage3:/uploadImages/2020/312/02/3NXCRK4U3589_2.jpg 
13230545[11:071711]INFOTakes:0msclasscom.tmg.cms.manager.dao.resourceImage.impl.ResourceImageDaoImplload
13230546[11:071711]INFOTakes:2msclasscom.tmg.cms.manager.dao.privilege.impl.UserDaoImplgetUserByid
13230547[11:071711]INFOTakes:57msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplselectSitemapWithoutAudit[MQ==][int]
13230548[11:071711]INFOTakes:5msclasscom.tmg.cms.manager.dao.forbidword.impl.ForbidwordDaoImplgetForbidwordBysiteid[MjI=][int]

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

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

grep'11:071820'catalina.out
grep'11:071811'catalina.out

时间范围内的查询

sed-n'/11:071820/,/11:071811/p'catalina.out
sed-n'/11:0718/,/11:0718/p'catalina.out

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

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

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

[root@yeskylogs]#tail-n20catalina.out|grep'INFOTakes:1'
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.config.impl.ConfigInfoDaoImplload
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTkwOTQ5][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzI0][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzI3][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzMw][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzA5NA==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[Mzc4Mg==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[OTM1MA==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MTE5MDMw][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTQ2MzQw][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTg2NzYy][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzYyMjA=][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.configModule.impl.ConfigModuleDaoImplgetPersonMenuList

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

[root@yeskylogs]#tail-n20catalina.out|grep'INFOTakes:1'--color
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.config.impl.ConfigInfoDaoImplload
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTkwOTQ5][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzI0][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzI3][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzMw][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzA5NA==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[Mzc4Mg==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[OTM1MA==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MTE5MDMw][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTQ2MzQw][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTg2NzYy][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzYyMjA=][int]

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

[root@yeskylogs]#tail-n20catalina.out|grep'INFOTakes:1'--color-a2
[11:112251]INFOTakes:0msclasscom.tmg.cms.manager.dao.article.impl.ArticleContentDaoImplgetArticlePageNum[NzE4MTM2ODky][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.config.impl.ConfigInfoDaoImplload[com.tmg.cms.manager.model.config.ConfigInfo]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTkwOTQ5][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzI0][int]
[11:112251]INFOTakes:0msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzI1][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzI3][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzMw][int]
[11:112251]INFOTakes:0msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzAzNg==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzA5NA==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[Mzc4Mg==][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[OTM1MA==][int]
[11:112251]INFOTakes:0msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MTE0MjQ4][int]
[11:112251]INFOTakes:0msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MTE4MDc4][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MTE5MDMw][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTQ2MzQw][int]
[11:112251]INFOTakes:0msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTQ3MTIw][int]
[11:112251]INFOTakes:0msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTY4OTYx][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[NTg2NzYy][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.sitemap.impl.SitemapDaoImplgetSitemapTop[MzYyMjA=][int]
[11:112251]INFOTakes:1msclasscom.tmg.cms.manager.dao.configModule.impl.ConfigModuleDaoImplgetPersonMenuList[com.tmg.cms.manager.model.config.ConfigPersonMenu]

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

[root@yeskylogs]#tail-n2000catalina.out|grep'INFOTakes:1'--color-a2|more
[root@yeskylogs]#tail-n2000catalina.out|grep'INFOTakes:1'--color-a2|less

附加

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

审核编辑 :李倩


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

    关注

    12

    文章

    8666

    浏览量

    84443
  • 程序员
    +关注

    关注

    4

    文章

    945

    浏览量

    29674
  • 日志
    +关注

    关注

    0

    文章

    128

    浏览量

    10591

原文标题:服务器爆了,你却连如何快速定位错误都不知道?这​锅你背定了。。。

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在Petalinux下定位decice-tree错误的一些技巧

    对于大部分错误,通过 petalinux 工具的 error log 已经足够定位错误类型和位置。
    的头像 发表于 07-21 09:15 1837次阅读
    如何在Petalinux下<b class='flag-5'>定位</b>decice-tree<b class='flag-5'>错误</b>的一些技巧

    Nginx日志分割方案

    nginx 默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log 和 error.log 文件会越来越大,尤其是 access.log,其
    发表于 06-19 15:05 396次阅读
    Nginx<b class='flag-5'>日志</b>分割方案

    logcat如何查看Andriod log系统日志

    logcat会输出系统哪些信息呢?如何学习logcat命令?logcat如何查看Andriod log系统日志?如何查看Andriod log系统日志
    发表于 03-03 06:15

    详解MySQL三大日志的作用

    MySQL日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制
    的头像 发表于 07-22 14:44 1219次阅读

    Log4Net日志存储

    在上位机开发中,日志记录是必不可少的,我们可以通过日志记录做日志分析及错误追踪。初学者会采用txt文本写入来实现日志保存,但是文本写入不是线
    的头像 发表于 08-11 15:59 1892次阅读
    <b class='flag-5'>Log</b>4Net<b class='flag-5'>日志</b>存储

    最全的Nginx日志分割教程

    nginx 默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log 和 error.log 文件会越来越大,尤其是 access.log,其
    的头像 发表于 02-16 14:51 924次阅读

    log4j日志框架分析

    og4j是Apache下的一款开源的日志框架,能够满足我们在项目中对于日志记录的需求。log4j提供了简单的API调用,强大的日志格式定义以及灵活的扩展性。使用者可以自己定义Appen
    的头像 发表于 02-28 14:32 971次阅读
    <b class='flag-5'>log</b>4j<b class='flag-5'>日志</b>框架分析

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

    用 grep 拿到的日志很少,我们需要查看附近的日志。我是这样做的,首先: cat -n test.log | grep “关键词” 得到关键日志的行号
    的头像 发表于 04-21 09:22 612次阅读

    C#上位机开发(十三)之使用Log4net添加日志记录功能

    一、Log4net 官方网站: 。 下载二进制dll库:包中提供了针对各个版本的dll库: 二、使用日志库 1. 添加库 复制对应的库文件到项目中: 2. 配置log4net 2.1.
    发表于 05-29 16:25 1次下载
    C#上位机开发(十三)之使用<b class='flag-5'>Log</b>4net添加<b class='flag-5'>日志</b>记录功能

    Spring Boot的日志框架使用

    目前市面上常见的日志框架有:slf4j(Simple Logging Facade for Java)、logback、log4j、log4j2、commons-logging(Spring默认
    的头像 发表于 06-02 10:59 837次阅读
    Spring Boot的<b class='flag-5'>日志</b>框架使用

    服务器log日志大,掌握这些可正确快速定位错误

    针对大量log日志快速定位错误
    的头像 发表于 06-05 18:14 539次阅读

    MySQL三种日志讲解

    MySQL 日志包含了错误日志、查询日志、慢查询日志、事务日志、二进制
    的头像 发表于 07-25 11:15 638次阅读
    MySQL三种<b class='flag-5'>日志</b>讲解

    Android异常日志快速定位分析小技巧

    Android异常日志快速定位分析小技巧
    的头像 发表于 08-09 10:06 2347次阅读
    Android异常<b class='flag-5'>日志</b><b class='flag-5'>快速</b><b class='flag-5'>定位</b>分析小技巧

    基于Rust的Log日志库介绍

    Rust是一门系统级编程语言,因其安全性、高性能和并发性而备受欢迎。在Rust应用程序中,日志记录是一项非常重要的任务,因为它可以帮助开发人员了解应用程序的运行情况并解决问题。Rust的Log库提供
    的头像 发表于 09-19 14:49 3114次阅读

    Android日志与logd交互过程

    2.2.3 Android日志与logd交互过程 2.2.3.1 Android日志传递给logd Android app层或framework层,通过调用Log/Slog/Rlog中d方法打印
    的头像 发表于 11-23 17:06 688次阅读
    Android<b class='flag-5'>日志</b>与logd交互过程