[原创]程序员分析程序log最实用技巧

作为一名通信码农,经常性分析大篇幅的log。久而久之,如何快速的在十兆百兆的文本log中理清问题发生的场景,问题的定位, 逐渐的有了一点心得,这篇文章分享出来,希望能交流经验。

我经验的核心是使用正则表达式:

1)用正则表达式代替简单关键词搜索

一般人会直接使用一个词汇在log中搜索, 比如找模块A, 可能就直接搜索 “moduleA”,这样找到的结果虽然只是跟你模块相关的,但是仍然是log量巨大的。对分析问题带来的好处还是有限。

我的做法是,首先你要对你负责的模块的流程比较清楚,比如启动过程有类似这样的log:

moduleA I‘m in status xx, send out event xxx

module A now status xxx, notify event xxx

那么就用正则表达式“moduleA.*event” 搜索。 可以检查启动流程是否正常, 不正常的, 异常发生在了哪一步骤。

2)同时搜索多个模块

接着上面的例子, 如果启动过程中, 怀疑moduleB 行为异常阻碍了moduleA的执行。一般的做法,是分两次搜索,一次搜索moduleA相关的, 一次搜索moduleB相关的。其实可以放在一起搜索:

假如moduleB有下面这样的log:

moduleB xxx run in step xxx

moduleB xxx run pass step xxx

我们可以用正则表达式“moduleA.*event|moduleB.*step” 来搜索, 这样你感兴趣的log就会放在一个搜索结果中。 对于分析两个模块之间的相互影响,时间关系等很有用。

3)如果log的场景是你陌生的, 但是大致确认了是你负责的模块有错误,你没有了固定的pattern 去搜索。这种情况我一般会尝试“moduleA.*err|moduleA.*fail”, err/fail 可以换上其他你经常遇到的表示异常的关键字, 经验上一般一半以上的概率也能找到问题发生的点:)

4) 最后说明一下: 我最长用的ultraedit 是支持上面的正则表达用法的。 虽然notepad++ 也支持,但是有个bug, 即,搜索结果常会有冗余条目,举个例子, log "moduleA in step xxx,notify moduleB", 如果我用正则搜索“moduleA|moduleB” ,上面这行log会在结果中显示两遍, 而ultraedit只显示一遍。

easylifesoso night of  2015, Jan, 8th

时间: 2024-10-03 22:53:54

[原创]程序员分析程序log最实用技巧的相关文章

程序员编程的10个实用技巧

下面是我自己在工作中学到的一些简单的技巧和策略,希望能对各位有用. 1.橡皮鸭调试法 不知道各位有没有这样的经历,当你正在给别人描述问题的时候,突然灵机一动想到了解决方案?这种情况的产生是有科学依据的.高谈阔论能让我们的大脑重新有条理地组织问题.在这种情况下,你的聊天对象就是“橡皮鸭”.团队中的每个人都应该积极主动乐意地成为彼此的“橡皮鸭”.有时候,如果你幸运的话,你的“橡皮鸭”搞不好还能给出有效的建议呢. 2.快速信息反馈 一旦写好代码就要尽快得到反馈.当你和我们在HubSpot一样,收到大量

程序员突围-程序调试分析(序)

-从实践到思考,痛苦的煎熬 其实算算,工作一年了,从大学毕业至今,接触编程已经五年了,但是真正的编程感觉还没有开始,从大一开始接触C语言,陆续接触c++,java,C#等等,现在感悟到了一点,编程语言学那么多有什么用呢?其实把一门编程语言学精了,学透了,其他的是触类旁通的(底层的C语言和C++可能有点例外),下面我会说一下我的经历,我感觉可能是大多数学习编程人的必经的阶段,让大家对编程的抵触少一些,然后想想一个我这样的白痴都能慢慢的开始程序调试,程序分析,你们绝对比我强的,下篇文章才会进入我的程

程序员突围-程序调试分析(一) 我从菜鸟进化的感悟

程序员突围-程序调试分析(一) 我从菜鸟进化的感悟 在说程序调试分析之前,我们还是了解一些基本的概念性的东西(在下现在从事java,因而都已java为例) 1. bug的分类 根据程序的阶段和MSDN和看过的一些书籍的分析,bug分为编译错误,运行时错误和逻辑的错误 (1)  编译错误 一般初学者犯错比较多的地方,编译错误,说白了就是程序在从java编译成.class文件时出现了问题,这个问题的现象比较明显,比如说语句写的有问题,那么对于这类问题的解决方法是什么呢,翻翻书,翻翻API(翻阅API

好程序员分享Vue的一些小技巧

好程序员分享Vue的一些小技巧,前言:用Vue开发一个网页并不难,但是也经常会遇到一些问题,其实大部分的问题都在文档中有所提及,再不然我们通过谷歌也能成功搜索到问题的答案,为了帮助小伙伴们提前踩坑,在遇到问题的时候,心里大概有个谱知道该如何去解决问题.这篇文章是将自己知道的一些小技巧分享给大家,希望看完本文可以有所收获. 文章内容总结: 组件style的scoped Vue 数组/对象更新 视图不更新 vue filters 过滤器的使用 列表渲染相关 深度watch与watch立即触发回调 这

作为python程序员,你需要掌握这些技巧

本文和大家分享的是python开发必备的30 个小技巧,一起来看看吧,希望对大家学习和使用 python 语言有所帮助. 贴士#1. 原地交换两个数字 Python  提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x, y = 10, 20print(x, y) x, y = y, xprint(x, y) #1 (10, 20)#2 (20, 10) 赋值的右侧形成了一个新的元组,左侧立即解析(unpack )那个(未被引用的)元组到变量 和 . 一旦赋值完成,新

负能量程序员杂谈- 程序员这个职业

本系列文章仅从个人有限的对事物的认知出发,如有不同意见,请温和提出态度,毕竟都是成年人,别那么幼稚. 我一直都认为,任何正当的职业都一样,本质都是首先养活自己,在满足这个前提下实现为人民服务的崇高理想.我是一个程序员,我很喜欢我的职业和从事这个职业的大部分人. 程序员是一个很奇葩的职业,在外界很多人看来高科技,高智商,高收入的一群人.殊不知,绝大部分程序员都拿着一份不高的薪水,整天被苦逼项目弄到精力憔悴,乔帮主阵亡的时候还忙着改自己的签名:stay hungry stay foolish.哥,你

Java程序员学习的6个小技巧

Java程序员学习的6个小技巧 知识改变命运,对于Java程序员来说,技术不断更新,只有及时充电,才能不被市场淘汰.北京Java培训机构分享Java程序员学习的6个小技巧兄弟连IT教育作为全国最大的PHP培训机构,迄今已有10年的教育历史,7大特色课程:PHP教程.安卓培训.JAVAEE+大数据.UI设计.HTML5培训.云计算架构师,全栈工程师培训,在目前IT市场特别火,每门课程都由名师牵头,以认认真真的态度做教育,培养的学员过万,在学员心中树立了良好的口碑. 1.一定要看书 现在学习Java

推荐一本好书给即将走入工作的程序员and程序媴

近期买了几本IT届推崇的经典书籍.当中有一本<程序猿修炼之道:专业程序猿必知的33个技巧>.由于这本比較薄,所以先翻着看. 这本书有别于其它的技术书籍,事实上算不上一本技术书籍.它不是教你怎么去提高编程,怎么去提高某方面的技术.我觉得这更像一本内功心法,教给你职场的一些软技能.强烈推荐给即将入职的朋友们.我好懊悔当初没有早点接触到这本书,曲曲折折走了不少弯路.如今读来,依旧感触体会非常深. 这本书很多其它的是告诉你,在工作岗位上怎样更有效的开展工作.当中有几点我想谈谈自己的看法. 拜师 基本每

干货!程序员进好公司的面试技巧

经过一个多月的面试求职,终于获得了一个非常满意的工作机会.作为一个有着两年多iOS开发经验的程序员,第一次裸辞跳槽,对面试求职可谓有一番全新的体会. 技能好不一定就保证你能进入好公司,有时候也需要很多技巧和方法的!最后我能够顺利进入广东地区比较出名的互联网公司,并获得相当可观的待遇,其实是花了很多心思去准备的. 下面是我对这段时间以来求职经验的总结,也包括我此前整理的技巧攻略,希望能帮在寻觅好岗位的程序员同胞们,早日找到最满意的公司. 一.写好简历是拿高薪offer的敲门砖 一个优秀程序员的思维