温馨提示×

怎样分析tomcat日志报错

小樊
38
2026-10-02 16:13:03
栏目: 智能运维

分析 Tomcat 日志报错,一般可以按下面几个步骤系统性地进行,既能快速定位问题,也能避免“瞎猜”。


一、先搞清楚 Tomcat 有哪些日志

Tomcat 常见日志文件(在 logs/ 目录下):

  1. catalina.out

    • 最常用
    • 标准输出 + 错误信息
    • 包括启动过程、异常堆栈
  2. catalina.yyyy-mm-dd.log

    • 按天分割的 Catalina 日志
  3. localhost.yyyy-mm-dd.log

    • Web 应用相关错误(如 Servlet 异常)
  4. localhost_access_log.yyyy-mm-dd.txt

    • 访问日志(URL、状态码、耗时)
    • 用于判断“是不是请求进来了”
  5. manager / host-manager 日志

    • 管理端相关

二、明确“报错发生在什么阶段”

1. Tomcat 启动失败

看:

  • catalina.out
  • 启动到哪一步停了

常见问题:

  • 端口被占用
  • JDK 版本不匹配
  • 配置文件错误(server.xml)
  • 内存不足

示例:

java.net.BindException: Address already in use

2. 应用部署失败

看:

  • localhost.yyyy-mm-dd.log
  • catalina.out

常见问题:

  • web.xml 错误
  • Spring 配置错误
  • 缺少依赖 jar

3. 运行时报错(访问接口挂了)

看:

  • catalina.out
  • localhost_access_log

重点看:

  • HTTP 状态码(404 / 500)
  • 异常堆栈(Exception)

三、如何看懂异常堆栈(重点)

一个典型错误示例:

java.lang.NullPointerException
    at com.xxx.UserService.getUser(UserService.java:45)
    at com.xxx.UserController.list(UserController.java:30)

分析顺序:

  1. 最上面的异常类型
    • NullPointerException
  2. Caused by(如果有)
    • 真正原因往往在最后
  3. 自己代码的行号
    • 优先看 com.xxx 而不是 java. / org.

四、常见错误类型速查

错误 可能原因
OutOfMemoryError 内存泄漏 / 堆太小
ClassNotFoundException 缺 jar / 版本冲突
NoClassDefFoundError 类加载失败
404 URL 错 / 没部署
500 代码异常
403 权限问题
Connection refused 服务没起 / 端口错

五、实用分析技巧

1. 用关键字搜索

grep -n "ERROR" catalina.out
grep -n "Exception" catalina.out

2. 看时间线

  • 报错前发生了什么
  • 是否和部署、重启有关

3. 结合访问日志

GET /api/user 500 120ms

说明:

  • 请求到了
  • 后端处理失败

4. 开启 DEBUG(必要时)

修改 logging.properties:

org.apache.catalina.level = FINE

六、建议你下一步怎么做

如果你愿意,可以直接把:

  • 报错日志片段
  • Tomcat 版本
  • JDK 版本
  • 是启动报错还是访问报错

发出来,我可以帮你逐行分析具体原因和解决方案。

0 踩