定位 Tomcat 日志异常,一般可以按照**“先找日志位置 → 再按时间/关键字筛选 → 结合应用与系统日志 → 必要时开启调试”**的思路进行。下面给你一套实用方法。
Tomcat 常见日志文件(默认在 TOMCAT_HOME/logs/):
catalina.out
catalina.yyyy-mm-dd.log
localhost.yyyy-mm-dd.log
localhost_access_log.yyyy-mm-dd.txt
manager / host-manager 日志
grep "500" localhost_access_log.*.txt
tail -n 500 catalina.out
搜索异常关键字:
grep -n "Exception" catalina.out
grep -n "ERROR" catalina.out
grep -n "Caused by" catalina.out
常见异常:
OutOfMemoryErrorClassNotFoundExceptionNullPointerExceptionSQLException重点看:
Caused by:
at com.xxx.xxx
→ 基本能定位到具体类和方法
grep -i "deploy" catalina.yyyy-mm-dd.log
grep -i "error" localhost.yyyy-mm-dd.log
常见问题:
如果应用用了:
日志可能在:
WEB-INF/classes/logback.xml 配置的路径/var/log/xxx/重点看:
top
jstat -gcutil <pid> 1000
jstack <pid> > thread.txt
grep -i "deadlock" thread.txt
netstat -tunlp | grep 8080
修改 conf/logging.properties:
org.apache.catalina.level = FINE
或应用日志改为 DEBUG。
| 现象 | 可能原因 |
|---|---|
| 启动失败 | web.xml / 端口 / JDK 版本 |
| 页面 404 | 路径 / Context 名 |
| 500 | 代码异常 / 空指针 |
| 卡死 | 死锁 / 慢 SQL |
| OOM | 内存泄漏 |
如果你愿意,可以把:
发出来,我可以直接帮你精准定位原因。