线上出现Bug时,快速定位问题

当线上出现Bug时,通过日志快速定位问题的步骤如下:


1. 定位日志文件

  • Tomcat默认日志路径${TOMCAT_HOME}/logs/
    • catalina.out:核心日志(启动、运行信息)
    • catalina.yyyy-MM-dd.log:按日期归档的日志
    • localhost.yyyy-MM-dd.log:应用上下文相关日志
    • localhost_access_log.yyyy-MM-dd.txt:访问日志(请求路径、状态码)
  • 应用自定义日志:根据日志框架(如Log4j、Logback)配置的路径查找,通常在应用目录或 /var/log/ 下。

2. 常用命令与技巧

实时监控日志
# 实时跟踪最新日志(Debug时常用)
tail -f ${TOMCAT_HOME}/logs/catalina.out

# 监控包含"ERROR"的实时日志
tail -f catalina.out | grep "ERROR"
搜索关键字
# 查找所有ERROR或Exception(不区分大小写)
grep -E -i "ERROR|Exception" catalina.out

# 显示错误行及前后50行(上下文分析)
grep -A 50 -B 50 "NullPointerException" catalina.out

# 按时间范围过滤(例如14:00到15:00)
sed -n '/2023-10-25 14:00:/,/2023-10-25 15:00:/p' catalina.out
分页查看与过滤
# 分页查看日志(支持搜索:按/输入关键字)
less catalina.2023-10-25.log

# 统计错误出现次数
grep "ERROR" catalina.out | wc -l

# 查找访问日志中的500错误
grep " 500 " localhost_access_log.2023-10-25.txt
日志截取与归档
# 查看最近100行日志
tail -n 100 catalina.out

# 将某个时间段的日志保存到文件
sed -n '/2023-10-25 14:00:/,/2023-10-25 15:00:/p' catalina.out > error.log

3. 高级排查

  • 线程堆栈分析:若怀疑死锁或高CPU,使用 jstack 生成线程快照。
  • 内存分析:检查GC日志(需JVM启用 -Xloggc:/path/to/gc.log)。
  • 网络与进程:结合 netstatpstop 查看资源占用。

4. 示例流程

  1. 确定问题时间:用户反馈14:00出现500错误。
  2. 定位访问日志
    grep " 500 " localhost_access_log.2023-10-25.txt | grep "14:"
    
  3. 查找对应错误日志
    grep "2023-10-25 14:" catalina.out | grep -C 20 "NullPointerException"
    
  4. 分析堆栈:根据日志中的异常类型和代码行定位Bug。

5. 工具推荐

  • 文本处理grepawksed
  • 日志聚合:ELK(Elasticsearch+Logstash+Kibana)
  • 自动化监控:Prometheus+Grafana

通过以上步骤,可高效定位并解决大多数线上问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值