温馨提示×

怎么分析CentOS Java日志

小樊
53
2026-08-04 05:54:42
栏目: 编程语言

分析 CentOS 上的 Java 日志,通常可以从 定位日志、日志类型、分析思路、常用命令、问题定位 五个层面来做。下面给你一套实用、可落地的分析方法。


一、先搞清楚 Java 日志在哪

1️⃣ 常见 Java 日志位置

场景 常见路径
Spring Boot /var/log/xxx/logs/nohup.out
Tomcat $CATALINA_HOME/logs/
自写 Java 程序 启动参数指定目录
systemd 启动 journalctl -u 服务名

2️⃣ 常见日志文件

application.log
catalina.out
stderr.log
stdout.log
gc.log

二、Java 日志的常见类型

1️⃣ 应用日志

  • 业务日志(error / warn / info)
  • 框架日志(Spring、MyBatis)

2️⃣ JVM 日志

  • GC 日志
  • OOM 日志
  • 崩溃日志(hs_err_pid.log)

3️⃣ 系统日志

/var/log/messages
/var/log/syslog
journalctl

三、分析思路(非常重要)

✅ 通用排查顺序

  1. 时间定位
  2. 异常类型
  3. 线程信息
  4. 上下文日志
  5. 系统资源

四、CentOS 常用分析命令

1️⃣ 查看实时日志

tail -f application.log
journalctl -u your-service -f

2️⃣ 查找异常

grep -i "exception" application.log
grep -i "error" application.log

3️⃣ 精确时间范围

sed -n '/2025-01-01 10:00/,/2025-01-01 11:00/p' application.log

4️⃣ 统计异常数量

grep -c "NullPointerException" application.log

5️⃣ 查看 OOM

grep -i "OutOfMemoryError" application.log

五、典型问题分析示例

1️⃣ Java 进程突然挂掉

journalctl -u java-app --since "10 min ago"

找:

  • killed
  • OOM
  • exit code

2️⃣ CPU 飙高

top -H -p <pid>

结合:

jstack <pid> > stack.txt

分析线程栈。

3️⃣ 内存问题

jmap -histo:live <pid>

GC 日志中找:

  • Full GC 频繁
  • 老年代无法回收

六、GC 日志分析(进阶)

开启 GC 日志

-Xlog:gc*:file=gc.log

分析重点

  • GC 频率
  • STW 时间
  • 内存回收情况

可用工具:

  • GCViewer
  • GCeasy

七、推荐工具(强烈建议)

命令行

  • less
  • awk
  • grep
  • sed

专业工具

  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • Arthas(线上神器)

八、常见问题速查表

现象 重点关注
请求变慢 WARN、GC、线程池
502 / 503 端口、OOM、线程阻塞
内存暴涨 OOM、GC、HashSet/Map
CPU 100% 死循环、线程栈

九、如果你愿意,我可以帮你

你可以直接发我:

  • ✅ 日志片段(脱敏)
  • ✅ 报错信息
  • ✅ 服务启动方式(systemd / docker / 手动)
  • ✅ JVM 参数

我可以 直接帮你定位问题根因,甚至给出优化建议。

0