分析 Tomcat 日志报错,一般可以按下面几个步骤系统性地进行,既能快速定位问题,也能避免“瞎猜”。
Tomcat 常见日志文件(在 logs/ 目录下):
catalina.out
catalina.yyyy-mm-dd.log
localhost.yyyy-mm-dd.log
localhost_access_log.yyyy-mm-dd.txt
manager / host-manager 日志
看:
catalina.out常见问题:
示例:
java.net.BindException: Address already in use
看:
localhost.yyyy-mm-dd.logcatalina.out常见问题:
看:
catalina.outlocalhost_access_log重点看:
一个典型错误示例:
java.lang.NullPointerException
at com.xxx.UserService.getUser(UserService.java:45)
at com.xxx.UserController.list(UserController.java:30)
分析顺序:
com.xxx 而不是 java. / org.| 错误 | 可能原因 |
|---|---|
| OutOfMemoryError | 内存泄漏 / 堆太小 |
| ClassNotFoundException | 缺 jar / 版本冲突 |
| NoClassDefFoundError | 类加载失败 |
| 404 | URL 错 / 没部署 |
| 500 | 代码异常 |
| 403 | 权限问题 |
| Connection refused | 服务没起 / 端口错 |
grep -n "ERROR" catalina.out
grep -n "Exception" catalina.out
GET /api/user 500 120ms
说明:
修改 logging.properties:
org.apache.catalina.level = FINE
如果你愿意,可以直接把:
发出来,我可以帮你逐行分析具体原因和解决方案。