温馨提示×

CentOS Java日志怎么定位

小樊
45
2026-07-20 16:24:15
栏目: 编程语言

在 CentOS 上定位 Java 日志/问题,一般从 日志文件、进程、JVM 参数、异常堆栈 四个方面入手。下面给你一套从入门到实战的定位思路。


一、先搞清楚 Java 日志在哪

1️⃣ 常见 Java 日志目录

/var/log/

常见路径:

  • /var/log/app/
  • /var/log/java/
  • /opt/xxx/logs/
  • /home/xxx/logs/

如果是 Spring Boot

logs/
app.log
application.log

2️⃣ 根据进程找日志路径(最常用)

查看 Java 进程

ps -ef | grep java

查看进程启动参数(重点)

ps -ef | grep java | grep -v grep

重点看:

  • -Dlogging.path
  • -Dlogback.configurationFile
  • -Dspring.profiles.active
  • -Xlog:
  • -XX:LogFile

90% 的日志路径都能从启动参数找到


二、实时查看 Java 日志(排查问题)

1️⃣ tail 实时查看

tail -f app.log

2️⃣ 查看最近 500 行

tail -n 500 app.log

3️⃣ 搜索异常

grep -i exception app.log
grep -i error app.log

4️⃣ 搜索某个时间段的日志

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

三、Java 进程卡死 / CPU 高 / 内存溢出

1️⃣ CPU 飙高

top

找到 PID 后:

top -Hp PID

拿到线程 ID(TID),转成 16 进制:

printf "%x\n" TID

再打堆栈:

jstack PID | grep -A 20 0x线程id

定位死循环、锁等待


2️⃣ 内存溢出(OOM)

查看是否有 dump

ls -lh *.hprof

查看 JVM 参数

jinfo PID

重点看:

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/java/

3️⃣ 查看 JVM 内存

jmap -heap PID

四、CentOS 系统日志(辅助定位)

1️⃣ Java 进程被 kill

dmesg | tail
journalctl -xe

常见原因:

  • OOM Killer
  • 内存不足
  • 磁盘满

2️⃣ 磁盘满了导致日志写不进

df -h
du -sh /var/log/*

五、常见 Java 日志框架定位

Logback

<property name="LOG_PATH" value="/var/log/app"/>

Log4j2

<RollingFile fileName="/var/log/app/app.log"/>

Spring Boot

logging.file.name=/var/log/app/app.log
logging.file.path=/var/log/app

六、快速排错 checklist ✅

✅ Java 进程是否存在
✅ 启动参数里有没有日志路径
✅ 日志文件是否正在写入
✅ 磁盘是否满
✅ 是否 OOM
✅ 是否线程死锁


七、你可以直接这样问我(更快)

你可以直接贴:

  • ps -ef | grep java
  • 报错日志片段
  • 启动失败 / 运行报错 / CPU 高 / 内存涨

我可以帮你 直接精确定位问题 + 给修复命令

0