有没有熟悉这样的场景:
时间已过十一点,空荡荡的办公室只剩自己孤身一人。陪你伏案忙碌的只有电脑风扇被迫营业的“嗡嗡”声, 窗外的夜正黑得带劲,仿佛巨兽的口吞噬自己的无奈。
天性善良不善言辞的你,容易被人颐指气使,加班对你来说是家常便饭。
作为一名码农,“我到底哪里错了,我需要怎么解决?”是我的座右铭。但是,解决问题的过程需要耐心和细心,需要在大文件日志中寻找问题线索,耗费巨量的时间和精力。因此,加班分析并解决问题是常有的事情。
有时候想,如果分析日志过程能高效,是不是就可以减少无意义的班?节约出来的时间老婆孩子热炕头岂不美哉。
本文介绍的 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",以定位问题。在关注日志时,我们需要注意以下几点:
- 如果应用程序崩溃了,我们会重点关注 "java.lang.RuntimeException"。
- 如果没有发现 "RuntimeException",则可能会关注与 "SQLiteLog" 相关的警告。
- 如果甚至连系统警告都没有,那么只能查看与应用程序相关的 "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。
总结
本文重点介绍如何分析大型日志文件的两个主要步骤。第一个是如何在多个文件中找到需要关注的文件,第二个是如何在关注的文件中直观地查看关键字,以便有针对性地解决问题。
每个人解决问题的方式都不同,希望可以将更好的方法分享给大家。我认为随着自然语言处理技术的发展,我们可能不需要这些技巧了。通过自然语言处理技术,将所有日志录入,让计算机理解,然后直接让它分析问题并给出方案即可。目前我还没有找到这样的工具,如果有大佬们发现了,也欢迎分享哦~~。