如何在Linux中查找日志中的异常语句

使用grep配合上下文显示

# 显示ERROR前后5行(最常用)
grep -B 5 -A 5 "ERROR" 日志文件.log

# 显示FATAL前后10行
grep -B 10 -A 10 "FATAL" 日志文件.log

# 同时显示前后5行(简写)
grep -C 5 "ERROR" 日志文件.log

使用tail和grep组合

# 实时跟踪日志,高亮显示ERROR
tail -f 日志文件.log | grep --color=always -E "ERROR|FATAL"

# 实时查看错误及其上下文
tail -f 日志文件.log | grep -C 3 -E "ERROR|FATAL"

使用less查看

# 用less打开日志
less 日志文件.log

# 在less中搜索(按/然后输入)
/ERROR

# 按n跳转到下一个匹配,按N跳转到上一个
# 按v进入编辑模式查看上下文

查找特定时间端的错误

# 假设日志格式:2026-03-20 10:30:15 ERROR ...
# 查找某个时间点之后的错误
sed -n '/2026-03-20 14:30/,/2026-03-20 15:00/p' 日志文件.log | grep ERROR

# 或者用awk
awk '/2026-03-20 14:30/{flag=1} /2026-03-20 15:00/{flag=0} flag' 日志文件.log | grep ERROR

实用组合命令

找出所有错误并保存到文件
grep -B 3 -A 3 "ERROR" 日志文件.log > error_context.log

统计错误数量
grep "ERROR" 日志文件.log | wc -l

查看最新的几个错误
# 从文件末尾向前搜索(先tac反转文件)
tac 日志文件.log | grep -m 5 -B 3 "ERROR" | tac

针对常用的日志文件的快捷命令
# Java应用日志
grep -C 5 "Exception" catalina.out

# 系统日志
sudo grep -C 5 "ERROR" /var/log/syslog

# Docker容器日志
docker logs 容器名 2>&1 | grep -C 5 "ERROR"


实际使用案例
# 1. 先找到错误出现的位置
grep -n "ERROR" app.log | head -5

# 2. 查看具体错误及其上下文
grep -B 5 -A 10 "NullPointerException" app.log

# 3. 如果日志很大,可以先定位时间
less app.log
# 然后在less中搜索 /2026-03-20 14:.*ERROR

posted @ 2026-03-20 19:54  奕帆卷卷  阅读(2)  评论(0)    收藏  举报