在 CentOS 上分析 Java 日志,通常可以从 日志位置、常见日志类型、分析思路、常用命令和工具 几个方面入手。下面给你一套比较实用的分析方法,适合生产环境排查问题。
取决于你用的框架和配置:
| 类型 | 默认位置 |
|---|---|
| Spring Boot | logs/ 目录(如 application.log) |
| Log4j / Logback | 配置文件中指定(如 /var/log/app/) |
| 手动指定 | -Dlogging.path 或 -Dlog.home |
常见路径:
/var/log/
/opt/app/logs/
~/logs/
如果 Java 进程是通过 nohup 启动的:
nohup java -jar app.jar > app.log 2>&1 &
日志在:
app.log
/var/log/messages
/var/log/syslog
journalctl -xe
JVM 垃圾回收情况:
-Xlog:gc*:file=gc.log
或老版本:
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
jstack 生成tail -f app.log
grep -i error app.log
grep -i exception app.log
sed -n '/2026-01-20 10:00/,/2026-01-20 11:00/p' app.log
grep -c NullPointerException app.log
grep -i "OutOfMemoryError" app.log
jps -l
jinfo <pid>
jstat -gc <pid> 1000 10
jstack <pid> > stack.txt
重点看:
BLOCKEDDeadlockRUNNABLEgrep -n ERROR app.log | head -20
grep -i "OutOfMemoryError" app.log
grep -i "GC pause" gc.log
jstack <pid>
top
free -h
df -h
lessawkgrepsedcurl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
常用命令:
dashboard
thread
watch
trace
如果你愿意,可以直接把:
jstack 输出贴出来,我可以 直接帮你定位问题原因 ✅
需要我给你一份 Java 日志分析速查表 吗?