温馨提示×

如何分析Tomcat报错日志

小樊
44
2026-07-13 09:27:09
栏目: 智能运维

分析 Tomcat 报错日志是排查 Java Web 应用问题的重要步骤。下面我从日志位置、关键日志类型、常见错误及分析方法、实战思路几个方面系统说明。


一、Tomcat 日志在哪里?

默认情况下,Tomcat 日志位于:

$TOMCAT_HOME/logs/

常见日志文件:

文件名 作用
catalina.out 最重要,包含所有标准输出和错误
catalina.yyyy-mm-dd.log 按日期分割的 Catalina 日志
localhost.yyyy-mm-dd.log 应用级异常
localhost_access_log.yyyy-mm-dd.txt 访问日志(类似 Nginx access log)
manager.yyyy-mm-dd.log Manager 应用日志
host-manager.yyyy-mm-dd.log Host Manager 日志

优先看:catalina.outlocalhost.*.log


二、Tomcat 日志的基本结构

典型错误日志结构:

SEVERE: xxx
java.lang.NullPointerException
    at com.xxx.ClassName.method(ClassName.java:123)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:145)

重点关注:

  1. 日志级别
    • SEVERE / ERROR:严重错误
    • WARNING / WARN:警告
    • INFO:正常信息
  2. 异常类型
  3. Caused by 链
  4. 堆栈信息中的业务代码行号

三、常见 Tomcat 报错类型与分析方法

1️⃣ 端口被占用

java.net.BindException: Address already in use

✅ 分析:

  • 端口(如 8080、8005)被占用
  • 可能 Tomcat 已启动或别的程序占用

✅ 解决:

netstat -tunlp | grep 8080

ps -ef | grep tomcat

2️⃣ 应用在启动时失败

org.apache.catalina.LifecycleException
Caused by: java.lang.ClassNotFoundException

✅ 常见原因:

  • web.xml 配置错误
  • 缺少 jar 包
  • 类路径不对

✅ 排查:

  • 检查 WEB-INF/lib
  • 检查 WEB-INF/classes
  • 检查 web.xml

3️⃣ 内存溢出(OOM)

java.lang.OutOfMemoryError: Java heap space

java.lang.OutOfMemoryError: PermGen space (JDK7)
java.lang.OutOfMemoryError: Metaspace (JDK8+)

✅ 分析:

  • 堆内存不足
  • 类加载过多
  • 内存泄漏

✅ 解决:

-Xms512m -Xmx1024m
-XX:MetaspaceSize=128m

4️⃣ JSP 编译错误

org.apache.jasper.JasperException
Unable to compile class for JSP

✅ 常见原因:

  • JDK 与 Tomcat 版本不兼容
  • JSP 语法错误
  • 缺少依赖

✅ 排查:

  • 查看 JSP 对应的 .java 文件
  • 检查 JDK 版本

5️⃣ 404 / 500 错误

404

The requested resource is not available

✅ 可能原因:

  • URL 写错
  • 应用未部署成功
  • context path 不匹配

500

javax.servlet.ServletException

✅ 表示:

  • 应用代码抛异常
  • 查看 localhost.*.log

6️⃣ 数据源 / 数据库连接错误

Cannot create JDBC driver of class ''
Communications link failure

✅ 排查:

  • context.xml
  • 数据库是否启动
  • 用户名 / 密码 / 端口是否正确

四、分析日志的实战步骤(推荐流程)

✅ 第一步:定位时间点

tail -n 500 catalina.out

grep -n "ERROR" catalina.out

✅ 第二步:找到第一个异常

⚠️ 不要只看最后一行

  • 真正原因通常是第一个 Caused by

✅ 第三步:区分是 Tomcat 问题还是应用问题

现象 判断
应用启动失败 应用问题
Tomcat 启动失败 Tomcat / 环境
访问接口报错 应用

✅ 第四步:定位到业务代码

at com.example.UserService.login(UserService.java:45)

✅ 直接看这一行代码


五、提高排查效率的技巧

1️⃣ 开启更详细日志

修改:

$TOMCAT_HOME/conf/logging.properties

2️⃣ 使用 grep 精准定位

grep -R "NullPointerException" logs/

3️⃣ 重启前备份日志

cp catalina.out catalina.out.bak

六、一个真实案例分析示例

报错:

SEVERE: Context [] startup failed
Caused by: java.io.FileNotFoundException: /app/config/db.properties

✅ 分析:

  • 配置文件不存在
  • 路径写死或环境变量未设置

✅ 解决:

  • 检查配置文件是否存在
  • 使用相对路径或环境变量

七、总结一句话

Tomcat 日志分析 = 找时间点 + 找第一个异常 + 看 Caused by + 定位到业务代码


如果你愿意,可以把具体报错日志贴出来(脱敏即可),我可以帮你逐行分析、直接告诉你是哪一行代码的问题。

0