在 CentOS 上分析 Java 日志,通常可以从日志文件位置、常用分析命令、工具、以及针对 Java 应用(如 Tomcat / Spring Boot)的特殊点几个方面来做。下面给你一套实用方案。
Tomcat
/var/log/tomcat/
/opt/tomcat/logs/
关键文件:
catalina.out(最重要)localhost.logmanager.logSpring Boot
/var/log/appname/logs/nohup.out系统级 Java 崩溃
/var/log/messages
hs_err_pid*.log(JVM 崩溃日志)
tail -f catalina.out
grep -n "Exception" catalina.out
grep -n "ERROR" app.log
sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log
grep "NullPointerException" app.log | wc -l
grep "timeout" app.log | sort | uniq -c | sort -nr
重点看:
Caused byat com.xxx.xxxOutOfMemoryErrorStackOverflowError示例:
java.lang.OutOfMemoryError: Java heap space
如果开启了:
-XX:+PrintGCDetails -Xloggc:/var/log/java/gc.log
分析:
grep "Full GC" gc.log
less(大文件友好)awk(统计)zgrep(分析压缩日志)zgrep "ERROR" app.log.2026-01-*.gz
jps -l
ps -ef | grep java
top -Hp <pid>
jstack <pid> > thread.log
jmap -heap <pid>
jmap -dump:format=b,file=heap.hprof <pid>
用 MAT / VisualVM 分析 heap.hprof
tail -f catalina.outtop 看 CPUjstack pid 看线程BLOCKED / WAITINGinfo / warn / errortraceId如果你愿意,可以:
我可以帮你直接分析日志内容。