温馨提示×

如何解读tomcat异常日志

小樊
39
2026-09-18 16:49:54
栏目: 智能运维

解读 Tomcat 异常日志,核心目标是快速定位“什么时间、哪个应用、哪段代码、什么原因出错”。下面按「日志结构 → 常见异常分类 → 解读步骤 → 实战示例」来说明。


一、Tomcat 日志文件概览

常见日志位置(CATALINA_BASE/logs):

  • catalina.out / catalina.log:主日志,包含启动、运行异常
  • localhost.log:Web 应用相关异常
  • localhost_access_log:访问日志(不含异常)
  • manager / host-manager:管理端日志

二、一条典型异常日志的结构

示例:

2024-01-12 10:23:45.123 SEVERE [http-nio-8080-exec-3] 
org.apache.catalina.core.StandardWrapperValve.invoke 
Servlet.service() for servlet [dispatcher] in context with path [/demo] threw exception
java.lang.NullPointerException
    at com.example.demo.UserController.getUser(UserController.java:42)
    at ...

关键要素:

  1. 时间戳:何时发生
  2. 日志级别:SEVERE / ERROR / WARN
  3. 线程名http-nio-8080-exec-3
  4. 组件/类StandardWrapperValve
  5. 上下文路径/demo
  6. 异常类型NullPointerException
  7. 堆栈信息(最关键):出错代码行

三、常见异常类型与含义

1. 启动类异常

  • ClassNotFoundException:缺 jar 或类路径错误
  • NoClassDefFoundError:编译有,运行缺
  • Port already in use:端口被占用

2. Web 请求异常

  • NullPointerException:对象未初始化
  • SQLException:数据库问题
  • IOException:文件/网络问题

3. 部署异常

  • Deployment failed:war 包结构错误
  • OutOfMemoryError:内存不足

四、标准解读步骤(实战流程)

  1. 看级别:SEVERE / ERROR 优先看
  2. 看上下文路径:确认是哪个应用
  3. 看异常类型:判断大类问题
  4. 看堆栈第一行自己代码:定位具体类与方法
  5. 结合业务与时间:是否刚发版 / 高并发 / 定时任务

五、示例解读

日志:

SEVERE [...] Servlet.service() for servlet [jsp] in context [/shop] threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP

解读:

  • 应用:/shop
  • 问题:JSP 编译失败
  • 原因通常是:JDK 版本不匹配 / JSP 语法错误

六、实用建议

  • grep 过滤:grep -n ERROR catalina.out
  • 发版前保留旧日志
  • 配合应用日志(logback / log4j)一起看
  • 异常看“自己代码第一行”,不要被框架堆栈吓到

如果你有具体的一段 Tomcat 异常日志,可以直接贴出来,我可以帮你逐行解读并给出可能原因和解决方案。

0