温馨提示×

怎样定位tomcat日志异常

小樊
41
2026-10-09 12:13:20
栏目: 智能运维

定位 Tomcat 日志异常,通常可以按下面这几个步骤和方法来进行:


一、先明确 Tomcat 日志文件位置

Tomcat 默认日志在:

$TOMCAT_HOME/logs/

常见日志文件:

  • catalina.out:最常用,标准输出和异常堆栈
  • catalina.YYYY-MM-DD.log:按天记录的启动和运行日志
  • localhost.YYYY-MM-DD.log:应用级异常(如 Servlet 报错)
  • localhost_access_log.YYYY-MM-DD.txt:访问日志(非异常,但可辅助判断)

二、快速定位异常的核心方法

1. 直接搜索关键字(最常用)

cd $TOMCAT_HOME/logs
grep -n "ERROR" catalina.out
grep -n "Exception" catalina.out
grep -n "Caused by" catalina.out

常见关键字:

  • Exception
  • Error
  • Caused by
  • OutOfMemoryError
  • StackOverflowError
  • 404 / 500

2. 查看异常堆栈(重点)

异常通常长这样:

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

✅ 重点看:

  • 第一个 at xxx.xxx.xxx(类名:行号)
  • Caused by 后面的根本异常

3. 按时间定位

如果知道异常发生时间:

grep "2026-01-21 10:3" catalina.out

或:

less catalina.out
# 然后按 /2026-01-21 10:30 搜索

三、不同异常类型的定位思路

1. Tomcat 启动失败

看:

  • catalina.out
  • catalina.YYYY-MM-DD.log

常见问题:

  • 端口被占用
  • JDK 版本不匹配
  • web.xml 配置错误

2. 应用运行时异常

看:

  • localhost.YYYY-MM-DD.log
  • catalina.out

例如:

  • 空指针
  • SQL 异常
  • 权限问题

3. 性能 / 内存问题

  • OutOfMemoryError → 看 JVM 参数
  • 响应慢 → 结合 access log 看耗时

四、提升定位效率的建议

✅ 开启详细日志(调试时)

在 logging.properties 中调低级别:

org.apache.catalina.level = FINE

✅ 使用日志框架

  • 使用 Log4j / Logback
  • 不要在代码里 System.out.println

✅ 日志切割

避免 catalina.out 无限增大(可用 logrotate)


五、一个简单排查流程总结

  1. 确认异常时间
  2. 打开 catalina.out
  3. 搜索 Exception / Error
  4. 看第一个 at 行
  5. 结合代码定位问题
  6. 必要时看 localhost 日志

如果你愿意,可以把具体的异常日志贴出来,我可以直接帮你分析是哪一类问题、怎么改。

0 踩