Ubuntu Tomcat日志异常的标准处理流程
一 定位与查看日志
tail -f $CATALINA_HOME/logs/catalina.outgrep -i "ERROR\|SEVERE\|Exception" $CATALINA_HOME/logs/catalina.outgrep -i "ERROR" $CATALINA_HOME/logs/catalina.out | wc -lless $CATALINA_HOME/logs/localhost_access_log.[日期].txt二 快速排查路径
ps aux | grep tomcat),检查端口占用(如 netstat -tulpen | grep 8080 或 lsof -i :8080),若端口冲突,结束占用进程或更换端口。三 常见异常与修复对照表
| 异常现象或关键词 | 可能原因 | 处理要点 |
|---|---|---|
| Address already in use(端口被占用) | 其他进程占用 8080/8005 等 | lsof -i :8080 查 PID,kill -9 PID 或调整 Connector 端口 |
| ClassNotFoundException / NoClassDefFoundError | 依赖 JAR 缺失或打包问题 | 将缺失 JAR 放入 WEB-INF/lib,检查构建与发布流程 |
| OutOfMemoryError | 堆内存不足 | 在 catalina.sh 设置 JAVA_OPTS=“-Xms512m -Xmx1024m”(按服务器调整) |
| SEVERE: Error starting Tomcat context | web.xml 或依赖冲突 | 校验 web.xml 与依赖版本,清理工作目录后重部署 |
| SQLException / Connection refused / timeout | DB 配置错误、连接池不足、网络问题 | 核对 JDBC URL/账号/密码,优化 maxActive/maxWait,排查网络与数据库状态 |
| 日志乱码 | 编码不一致 | 在 logging.properties 设置 java.util.logging.ConsoleHandler.encoding=UTF-8,并确保终端/文件编码一致 |
| 访问异常(HTTP 500/404) | 应用代码异常或资源缺失 | 结合 localhost.[日期].log 与 localhost_access_log 定位请求与堆栈 |
以上对照总结了高频异常与可操作修复措施,可据此快速对症处理。
四 提升日志可观测性与后续预防
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINEjava.util.logging.ConsoleHandler.encoding=UTF-8,避免中文乱码。/opt/tomcat/logs/catalina.out { daily rotate 7 compress missingok notifempty copytruncate }