在 Ubuntu 上分析 Java 日志,通常分为日志来源确认 → 日志查看 → 问题定位 → 工具辅助分析几个步骤。下面给你一套实用思路。
常见 Java 应用日志位置:
应用自身日志
./logs/nohup.outlogback.xml / log4j2.xml 路径/var/log/tomcat9/catalina.outnohup java -jar app.jar > app.log 2>&1 &系统日志
journalctl -u your-service-name
或
/var/log/syslog
JVM 崩溃日志
hs_err_pidXXXX.log-XX:ErrorFile=/pathtail -f app.log
grep -i "error\|exception" app.log
sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log
grep -c "Exception" app.log
分析时优先看:
ERROR / FATALException + Caused byOutOfMemoryErrorStackOverflowErrorTimeoutConnection refused / reset示例:
java.lang.OutOfMemoryError: Java heap space
Caused by: java.sql.SQLException: Connection timeout
jps -l
top -p <pid>
jstack <pid> > thread.log
重点看:
BLOCKEDWAITINGjmap -heap <pid>
jmap -dump:live,format=b,file=heap.hprof <pid>
用工具分析:
lessawkgrepsed现象:接口变慢
Timeouttop 看 CPUjstack 看线程jmap 看内存如果你愿意,可以告诉我:
我可以直接帮你分析具体日志。