温馨提示×

如何定位tomcat日志异常

小樊
43
2026-10-11 11:55:03
栏目: 智能运维

定位 Tomcat 日志异常,一般可以按照**“先找日志位置 → 再按时间/关键字筛选 → 结合应用与系统日志 → 必要时开启调试”**的思路进行。下面给你一套实用方法。


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

Tomcat 常见日志文件(默认在 TOMCAT_HOME/logs/):

  1. catalina.out

    • 最重要
    • 标准输出 + 标准错误
    • 应用异常、堆栈信息一般在这里
  2. catalina.yyyy-mm-dd.log

    • Tomcat 自身启动/关闭日志
  3. localhost.yyyy-mm-dd.log

    • 应用部署、Context 初始化异常
  4. localhost_access_log.yyyy-mm-dd.txt

    • 访问日志(URL、状态码、耗时)
  5. manager / host-manager 日志

    • 管理端相关

二、快速定位异常的步骤

1️⃣ 确定异常发生时间

  • 用户反馈时间
  • 访问日志中的 500 / 404 / 超时
grep "500" localhost_access_log.*.txt

2️⃣ 查看 catalina.out(最核心)

tail -n 500 catalina.out

搜索异常关键字:

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

常见异常:

  • OutOfMemoryError
  • ClassNotFoundException
  • NullPointerException
  • SQLException

3️⃣ 看是否有“堆栈断点”

重点看:

Caused by:
at com.xxx.xxx

→ 基本能定位到具体类和方法


4️⃣ 检查部署日志

grep -i "deploy" catalina.yyyy-mm-dd.log
grep -i "error" localhost.yyyy-mm-dd.log

常见问题:

  • web.xml 错误
  • Spring 容器启动失败
  • 端口占用

三、结合应用日志(很重要)

如果应用用了:

  • Log4j / Logback / SLF4J

日志可能在:

  • WEB-INF/classes/logback.xml 配置的路径
  • /var/log/xxx/

重点看:

  • ERROR / WARN
  • 业务异常

四、系统层面辅助定位

1️⃣ CPU / 内存异常

top
jstat -gcutil <pid> 1000

2️⃣ 线程死锁

jstack <pid> > thread.txt
grep -i "deadlock" thread.txt

3️⃣ 端口问题

netstat -tunlp | grep 8080

五、开启调试日志(排障时)

临时调试

修改 conf/logging.properties:

org.apache.catalina.level = FINE

或应用日志改为 DEBUG。


六、常见异常速查表

现象 可能原因
启动失败 web.xml / 端口 / JDK 版本
页面 404 路径 / Context 名
500 代码异常 / 空指针
卡死 死锁 / 慢 SQL
OOM 内存泄漏

七、建议的排障顺序(总结)

  1. 看 access log(是否有错误请求)
  2. 看 catalina.out(异常堆栈)
  3. 看 localhost log(部署问题)
  4. 看 应用日志
  5. 用 jstack / jstat 查 JVM

如果你愿意,可以把:

  • Tomcat 版本
  • 异常日志片段
  • 报错时间点

发出来,我可以直接帮你精准定位原因。

0 踩