沉默是金,总会发光
大家好,我是沉默
前段时间公司来了个新同事,年轻、有活力,就是查日志的方式让我差点当场喊出:"兄弟,你是来写代码的,还是来找日志谈恋爱的?"
**-**01-
发生什么事
事情经过是这样的:
他写的代码在测试环境报错了,钉钉机器人把报警甩到了群里。我心想,这波正好摸鱼+带新人,顺便表现一波。
结果没想到,他先来了一句:
bash
tail -f a.log | grep "java.lang.NullPointerException"
想着等下次报错就能立刻抓到。等半天,终于蹦出来一行:
yaml
2025-07-03 11:38:48.339 [...] java.lang.NullPointerExceptionjava.lang.NullPointerException: null
我提醒他一句:"兄弟,这样看不到堆栈信息啊。"
他"哦"了一声,然后用 vi
打开整个文件,/NullPointerException
搜关键词,一个 n
一个 n
地翻......
半分钟过去了,异常在哪都没找全。
我人都傻了,当场掏出压箱底的查日志组合拳。
教完之后,新人一拍大腿:"妙啊!快写成文章,我发给我前同事看看,他们也是这么翻日志的......"
那既然都这么说了,今天这套查日志秘籍我就公开放送。
- 02-
查日志组合拳
核心武器:grep
灵魂奥义:-A、-B、-C、-H、-i、-c
我直接按场景教你,照着用就行。
场景一:查异常堆栈,绝不能只看一行!
Java 异常堆栈动不动几十行,只用 grep 匹配关键词,你永远只看得到最上面那一行。
正确姿势:
c
grep -A 50 "java.lang.NullPointerException" a.log
-A 50
的意思是匹配到的行+后面 50 行,堆栈信息一览无余。
怕刷屏?加 less
分页:
c
grep -A 50 "java.lang.NullPointerException" a.log | less
在 less
里你可以:
- ↑↓ / PageUp PageDown 滚动
G
直达末尾/Exception
继续搜索q
退出
从此告别 vi + /
的痛苦!
场景二:实时看新日志
应用正在跑,随时可能报错?这时候直接 tail 跟进:
bash
tail -f a.log | grep -A 50 "java.lang.NullPointerException"
报错一来,堆栈直接推到你面前。
大小写怕拼错?加 -i
忽略大小写。
想停?Ctrl + C
。
场景三:翻历史日志 & 压缩日志
线上日志常常被分片+压缩,变成 a.log.2025-07-02.gz
。这时候别傻傻解压。
查所有 .log
文件:
bash
grep -H -A 50 "java.lang.NullPointerException" *.log
查 .gz
文件:
arduino
zgrep -H -A 50 "java.lang.NullPointerException" *.gz
-H
会打印文件名,帮你知道异常在哪一天爆的。
场景四:统计异常数量
你想知道异常是偶发还是疯狂刷屏?
c
grep -c "java.lang.NullPointerException" a.log
多文件:
bash
grep -c "java.lang.NullPointerException" *.log
很快就能知道是 "今天抽风一次",还是 "系统已经炸锅"。
- 03-
常用 grep 参数对照表
参数 | 含义 |
---|---|
-A N |
显示匹配行之后 N 行 |
-B N |
显示匹配行之前 N 行 |
-C N |
显示匹配行上下文 N 行 |
-H |
打印文件名 |
-i |
忽略大小写 |
-r |
递归搜索子目录 |
-c |
统计匹配数量 |
例子:
c
grep -C 25 "java.lang.NullPointerException" a.log
这会把异常上下文都拉出来,一眼就能看出前因后果。
**-****04-**总结
江湖规矩,留一手
这套组合拳,我传给了新同事,现在也传给了你。
如果旁边同事还在 vi + /
地翻日志,
你就可以稳稳站出来说一句:"哥们,这活交给我吧。"
当然啦,江湖规矩,我今天只放了 grep 这一套。
其他更狠的工具(awk
、wc
、sed
、日志聚合神器 ELK)我还藏着。
想学?点赞+收藏+关注就是报名,下次我写一篇,再传你第二套大招。
**-****05-**粉丝福利
r
我这里创建一个程序员成长&副业交流群,
和一群志同道合的小伙伴,一起聚焦自身发展,
可以聊:
技术成长与职业规划,分享路线图、面试经验和效率工具,
探讨多种副业变现路径,从写作课程到私活接单,
主题活动、打卡挑战和项目组队,让志同道合的伙伴互帮互助、共同进步。
如果你对这个特别的群,感兴趣的,
可以加一下, 微信通过后会拉你入群,
但是任何人在群里打任何广告,都会被我T掉。