1、查异常堆栈
显示该行及其后面的50行内容,然后通过 less 命令进行分页查看
grep -A 50 "NullPointerException" a.log | less
参数解释:
- grep: 文本搜索命令
- -A 50: After 的意思,显示匹配行后面的50行
- “NullPointerException”: 要搜索的文本模式(Java空指针异常)
- a.log: 目标日志文件
- |: 管道符,将前一个命令的输出传递给后一个命令
- less: 分页查看器,用于逐页浏览长文本
A的参数还可以替换为以下参数:
- -B 50:Before的意思,显示匹配行前面的50行
- -C 50:Context的意思,显示匹配行前后的50行(对称显示)
2、实时监控新日志
实时监控日志文件,当出现 “NullPointerException” 时,显示该异常及其后面的50行内容。
tail -f a.log | grep --line-buffered "NullPointerException"
参数解释:
- tail -f: 实时跟踪文件的新增内容
- a.log: 目标日志文件
- –line-buffered:仅显示匹配的行
3、翻历史/压缩日志
快速定位多个日志文件中的空指针异常,并查看完整的错误堆栈信
grep -H -A 50 "NullPointerException" *.log
参数解释:
- -H: 显示文件名(即使只搜索一个文件)
- *.log: 匹配所有以 .log 结尾的文件
zgrep -H -A 50 "NullPointerException" *.gz
参数解释:
- zgrep: 专门用于搜索压缩文件的grep命令
- *.gz: 匹配所有以 .gz 结尾的压缩文件
4、统计异常数量
统计每个 .log 文件中包含 “NullPointerEWxception” 的行数
grep -c "NullPointerEWxception" *.log
-c: count 的意思,统计匹配行的数量
5、多种异常一起查
使用正则表达式在日志文件中同时搜索两种异常。
grep -E "NullPointerException|TimeoutException|IOException|SQLException" a.log
参数解释:
- -E: 使用扩展正则表达式(Extended Regular Expressions),启用扩展正则表达式,使得 | 被解释为或操作符,而不是普通字符
- “NullPointerException|TimeoutException|IOException|SQLException”: 匹配包含 “NullPointerException” 或者 “TimeoutException” 或者”IOException“或者”SQLException“的行
6、反向过滤(排除无关)
查找空指针异常并过滤掉调试信息
grep "NullPointerException" a.log -A 20 | grep -v "debug"
参数解释:
- grep -v:反向匹配,显示不包含指定模式的行
7、按时间范围筛选日志
查询出2025-08-21 10点到11点之间出现的空指针异常
awk '/2025-08-21 10:/,/2025-08-21 12:/' a.log | grep "NullPointerException"
参数解释:
- awk: 文本处理工具
- /2025-08-21 10:/,/2025-08-21 12:/:范围模式(提取这两个时间点之间的所有行)
- 起始模式:包含 “2025-08-21 10:” 的行
- 结束模式:包含 “2025-08-21 12:” 的行
8、关键字AND查询
查找同时包含 “Exception” 和 “UserService” 的行
grep "Exception" a.log | grep "UserService"
9、定位最近一次异常
从日志文件的末尾开始搜索,找到最后一个 “NullPointerException” 并显示它及其后面的50行内容
tac a.log | grep -m 1 "NullPointerException" -A 50
参数说明:
- tac: 反向显示文件内容(cat的反向命令),从文件的最后一行开始,逐行向上显示,相当于把文件内容完全颠倒顺序
- |:管道,将反向排列的日志内容传递给 grep
- -m 1: 最多匹配1次,找到第一个匹配就停止
10、异常排行
用于统计日志中各种异常的出现次数并按频率排序
grep "Exception" a.log | sort | uniq -c | sort -nr | head
参数说明:
- grep “Exception” a.log:从 a.log 中筛选出包含 “Exception” 的所有行
- sort:对异常行进行排序(按字母顺序)
- uniq -c:合并相同的异常行并显示计数
- sort -nr:按出现次数从高到低排序
- n: 按数字排序
- r: 反向排序(降序)
- head:显示前10行(默认)