这么分析大文件日志,以后就不用加班卷了!

哈希珊瑚
• 阅读 767

有没有熟悉这样的场景:

这么分析大文件日志,以后就不用加班卷了!

时间已过十一点,空荡荡的办公室只剩自己孤身一人。陪你伏案忙碌的只有电脑风扇被迫营业的“嗡嗡”声, 窗外的夜正黑得带劲,仿佛巨兽的口吞噬自己的无奈。

天性善良不善言辞的你,容易被人颐指气使,加班对你来说是家常便饭。

作为一名码农,“我到底哪里错了,我需要怎么解决?”是我的座右铭。但是,解决问题的过程需要耐心和细心,需要在大文件日志中寻找问题线索,耗费巨量的时间和精力。因此,加班分析并解决问题是常有的事情。

有时候想,如果分析日志过程能高效,是不是就可以减少无意义的班?节约出来的时间老婆孩子热炕头岂不美哉。

本文介绍的 Notepad++ 和 AnalysePlugin 绝妙组合,在分析大文件日志上大放异彩,简直是“神兵利器”,特别对初入职场的码农,文字或者数据统计相关从业人员特别有用。职场老手应该都会有自己的独家秘籍,见仁见智,没有标准答案,能达成目标即好方法。文章是本人经验总结,不喜勿喷,欢迎多多留言关注,谢谢~~~

话不多说,本文重点讲解如何使用 Notpad++ 配合 AnalysePlugin 分析大文件日志,找到目标日志信息。

存在问题

大文件日志分析,我们需要一次性搜索多个关键字,将面临两个问题。

一. 多日志文件,不知道关键字在哪些文件里

面对几个 GB 的大文件日志,例如安卓系统应用出现无响应问题时,系统会自动生成多个异常跟踪文件并自动保存,导致存在过多的日志文件。

如何找到关注日志在哪个文件呢?

通常的过程是这样的:

for(int i = 1 ; i <= 日志文件数目;++i){
   1. 打开单个日志文件
   2. bool result = ctrl + F 搜索目标关键字
   if(result){
      3. 保存。
   }
   4. 获取保存所有带目标关键字日志
   for(int j = 1 ; j <= 目标关键字日志数目;++j){
      5. 打开初步文件看是否存在有用信息,定位问题。
   }
}

是不是有点像大海捞针的感觉?

打开所有的日志文件,然后一个个查看是不是目标日志文件。该方法肯定可行,无非就是多花点时间。

只要方法是对的,总可以完成。然而,你有没有想过,凭啥这种“不用脑子”的体力活要你干?爷的时间就这么不值钱吗?有这时间刷刷剧,打把游戏不香吗?

二.无法有重点的分析日志

举个例子,我们需要在日志文件中查找 "onLayout"、"SQLiteLog"、"java.lang.RuntimeException",以定位问题。在关注日志时,我们需要注意以下几点:

  1. 如果应用程序崩溃了,我们会重点关注 "java.lang.RuntimeException"。
  2. 如果没有发现 "RuntimeException",则可能会关注与 "SQLiteLog" 相关的警告。
  3. 如果甚至连系统警告都没有,那么只能查看与应用程序相关的 "onLayout" 日志。

通常的做法是直接搜索关键字,这样做虽然可行,但给人的感觉不够直观。由于屏幕小且高度近视,搜索结果都是一堆黄色的浆糊,无法有效区分日志级别,不利于重点突出地分析问题。

如下在Notepad++中的搜索结果,只要是关键字都是黄色。

这么分析大文件日志,以后就不用加班卷了!

一般的处理思路是,将就着看就行,别没事找事。被子反正第二天会睡不好,索性不叠了~~~,哈哈!

不过,码农应该都有洁癖,长期沉浸在祖传的“屎山”中,增删改查,谁不都会说:“我去,垃圾代码!”如果是我,我会怎么怎么做。

看吧,是个人都不会将就,如果有更好的选择 😁。

如何解决

一. 如何在多文件中快速查找目标关键字

首先,你得安装一个Notepad++

不会的去问度娘或谷歌,细讲只会拉低本文档次和目标人群,再次重申,本文只适合高端高智商帅哥美女阅读!

其次,批量选中需要搜索的多个文件,右键打开方式中选中 Notepad++ 打开。

如果 Notepad++ 之前打开过其他文件,可以先关闭,不要影响到这次打开文件就行,保证当前打开都是目标搜索文件,不然影响搜索结果。

最后,你自己操作一遍。

如下是我为你准备的爱心录屏。我同时选中了多个文件,然后在这些文件中搜索关键字“ANR”。结果显示所有打开的文件中有两个文件包含该关键字,这样我就知道这两个文件是有用的,其他的可以不用管。

这么分析大文件日志,以后就不用加班卷了!

二. 如何有重点的分析日志

可通过 AnalysePlugin 插件来解决。

AnalysePlugin 支持正则表达式或转义模式搜索日志,并为每个搜索设置不同颜色。搜索结果将按照与原点相同的顺序存储在固定窗口中,双击可以跳转到原始位置。

效果如下:

这么分析大文件日志,以后就不用加班卷了!

如何安装 AnalysePlugin

步骤:NotePad++ → 插件 → 插件管理 → 搜索 AnalysePlugin→ 勾选 → 点击右侧安装,安装成功后会出现一个独有图标,这就表示安装成功。

爱心视频如下:

这么分析大文件日志,以后就不用加班卷了!

这么分析大文件日志,以后就不用加班卷了!

如何使用

还是以开头例子来说明:查找”onLayout”、”SQLiteLog”、”java.lang.RuntimeException” 并且区分日志级别,onLayout 用蓝色表示,SQLiteLog 用黄色表示,而异常 java.lang.RuntimeException 则用红色表示。

如图所示按照如下步骤来添加和设置颜色。

AnalysePlugin 菜单中有很多配置可以设置。例如,Colour BG 可以设置背景色。Search type 中支持正则表达式等。Comment 还可以给关键字添加注释。这里不再一一介绍。

这么分析大文件日志,以后就不用加班卷了!

这样,我们就可以将日志区分开来,关注我们定义的日志级别,有针对性地分析日志。

注意事项

官方说明 NotePad++ 需要 ≥ 5.1 以上才支持 AnalysePlugin。

总结

本文重点介绍如何分析大型日志文件的两个主要步骤。第一个是如何在多个文件中找到需要关注的文件,第二个是如何在关注的文件中直观地查看关键字,以便有针对性地解决问题。

每个人解决问题的方式都不同,希望可以将更好的方法分享给大家。我认为随着自然语言处理技术的发展,我们可能不需要这些技巧了。通过自然语言处理技术,将所有日志录入,让计算机理解,然后直接让它分析问题并给出方案即可。目前我还没有找到这样的工具,如果有大佬们发现了,也欢迎分享哦~~。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
liam liam
3年前
不是吧,连公司里的卷王写代码都复制粘贴,这合理?
没错,我,本人,就是那种卷心菜,就是那种想卷但卷不过别人的,我每天吭哧吭哧写代码,写到办公区里空荡荡地只剩下我一个人,但我们组里,就我需求写得最慢,bug写得最多,我弟常问我:“哥,别的同事加班都没你多你绩效一定不错吧?”但、其实是因为我写不过别人,尤其公司里那个卷王,代码写得好,还写得快,改bug测试小姐姐一提他立马响应改好。搞得测试组那边买奶茶常常会
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Stella981 Stella981
3年前
AssemblyScript 入门指南[每日前端夜话0xEB]
每日前端夜话0xEB每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2459 字预计阅读时间:10分钟作者:DannyGuo翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/b880277c594152a503
Stella981 Stella981
3年前
Node.js 12中的ES模块[每日前端夜话0x9E]
每日前端夜话0x9E每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2552字预计阅读时间:10 分钟作者:BrianDeSousa翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/2ccaf94cecd3
Stella981 Stella981
3年前
Postman 使用方法详细介绍
1,下载安装:https://www.getpostman.com/apps2,打开Postman,如图所示:!(https://oscimg.oschina.net/oscnet/00f434cd831f2f74fea6f6d7b86bc46a751.png)3,创建一个接口项目!(https://oscimg.oschina.
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Nginx反向代理upstream模块介绍
!(https://oscimg.oschina.net/oscnet/1e67c46e359a4d6c8f36b590a372961f.gif)!(https://oscimg.oschina.net/oscnet/819eda5e7de54c23b54b04cfc00d3206.jpg)1.Nginx反