温馨提示×

tomcat报错日志如何定位

小樊
37
2026-08-20 15:09:39
栏目: 智能运维

定位 Tomcat 报错日志,一般按**“先看哪、再看什么、怎么缩小范围”的思路来,下面给你一套实战型排查流程**,适用于大多数 Tomcat 启动失败、访问 404/500、内存溢出等问题。


一、核心日志文件位置(最重要)

1️⃣ Tomcat 日志目录

$TOMCAT_HOME/logs/

常见文件:

文件名 作用
catalina.out 最重要,标准输出 + 错误日志
catalina.yyyy-mm-dd.log 按日期的 Tomcat 日志
localhost.yyyy-mm-dd.log 应用级异常
localhost_access_log.txt 访问日志(类似 Nginx access log)
manager.xxx.log manager 应用日志
host-manager.xxx.log host-manager 日志

80% 的问题都在 catalina.out


二、快速定位思路(强烈推荐)

✅ 第一步:看 Tomcat 是否能启动

tail -n 200 catalina.out

重点看:

  • Server startup in xxx ms ✅ 成功
  • 是否有 ERRORExceptionFailed

✅ 第二步:找“第一个异常”

⚠️ 不要被后面的异常迷惑,找第一个异常

搜索关键字:

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

重点看:

  • Caused by
  • at xxx.xxx.xxx(XXX.java:123)

三、常见错误类型 & 快速定位

1️⃣ 端口被占用(启动失败)

错误示例:

Address already in use

定位:

netstat -tunlp | grep 8080

或:

lsof -i:8080

解决:

  • 改端口 server.xml
  • 或杀掉占用进程

2️⃣ 应用启动异常(404 / 500)

看:

localhost.yyyy-mm-dd.log

常见原因:

  • Spring 配置文件错误
  • Bean 初始化失败
  • 数据库连接失败

3️⃣ 内存溢出(OOM)

错误示例:

java.lang.OutOfMemoryError: Java heap space

定位:

  • 一定是 catalina.out
  • 看是否有 PermGen / Metaspace

解决:

# bin/catalina.sh
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m"

4️⃣ 类找不到 / 包冲突

错误示例:

ClassNotFoundException
NoClassDefFoundError

定位:

  • 看是不是 jar 冲突
  • 是否少包
WEB-INF/lib/

5️⃣ 访问 404 但 Tomcat 正常

检查顺序:

  1. 应用是否部署成功
  2. webapps/ 下是否有项目
  3. context-path 是否正确
  4. server.xml 中是否配置 <Context>

四、高效搜索技巧(非常实用)

查某时间段日志

sed -n '/2026-01-20 10:00/,/2026-01-20 10:30/p' catalina.out

实时查看日志

tail -f catalina.out

只看 ERROR

grep -i error catalina.out

五、日志级别调优(方便定位)

修改日志级别(推荐)

conf/logging.properties

org.apache.catalina.level = FINE

或应用使用 log4j / logback 时:

<root level="DEBUG">

六、定位问题“口诀”

先看 catalina.out
再找第一个 Exception
看 Caused by
结合时间点
再查应用日志


七、如果你愿意,我可以直接帮你定位

你可以直接贴:

  • catalina.out 报错片段(100 行以内)
  • 或说明:
    • Tomcat 版本
    • JDK 版本
    • 报错现象(启动失败 / 访问报错 / 内存溢出)

我可以直接帮你分析是哪一行导致的,并给出解决方案

0