Ubuntu Tomcat日志中异常如何处理
导读:Ubuntu Tomcat日志异常的标准处理流程 一 定位与查看日志 确认日志目录:Tomcat 日志通常在 $CATALINA_HOME/logs(安装目录下的 logs),部分发行包或安装方式使用 /var/log/tomcat 或...
Ubuntu Tomcat日志异常的标准处理流程
一 定位与查看日志
- 确认日志目录:Tomcat 日志通常在 $CATALINA_HOME/logs(安装目录下的 logs),部分发行包或安装方式使用 /var/log/tomcat 或 /var/log/tomcatX(X 为版本号)。主要文件包括:catalina.out(标准输出与错误)、catalina.[日期].log、localhost.[日期].log、以及应用或管理相关的 manager.log/host-manager.log。
- 常用查看命令:
- 实时跟踪:
tail -f /path/to/tomcat/logs/catalina.out - 关键字过滤:
grep -i 'ERROR\|SEVERE\|Exception' /path/to/tomcat/logs/catalina.out - 时间段筛选:
sed -n '/2025-12-15 10:00:00/,/2025-12-15 10:10:00/p' /path/to/tomcat/logs/catalina.out - 分页查看:
less /path/to/tomcat/logs/catalina.out - 统计错误数:
grep -c 'ERROR' /path/to/tomcat/logs/catalina.out
以上路径与命令适用于 Ubuntu 环境下的常见部署形态。
- 实时跟踪:
二 快速排查步骤
- 进程与端口:确认 Tomcat 是否在运行(
ps aux | grep tomcat);检查端口占用(如 8080):netstat -tulpen | grep 8080或lsof -i :8080,若冲突,结束占用进程或调整 server.xml 的端口。 - 配置文件:核对 conf/server.xml、conf/web.xml 等是否存在语法或语义错误(如 Host、Context、Valve 配置不当)。
- 应用与依赖:若启动失败或访问报类/资源缺失,检查 WEB-INF/lib 是否包含所需 JAR,避免 NoClassDefFoundError/ClassNotFoundException。
- 数据库与连接池:出现连接失败或超时,核对 JDBC URL、用户名、密码、驱动类名 与数据库网络连通性。
- 系统资源:检查 CPU、内存、磁盘空间 是否充足(如
free -h、df -h),防止因资源不足导致异常。 - 变更生效:修改配置或依赖后,重启 Tomcat(如
sudo systemctl restart tomcat或通过脚本重启)。
三 常见异常与处理对照表
| 异常现象或关键词 | 可能原因 | 处理要点 |
|---|---|---|
| Address already in use(端口被占用) | 其他进程占用 8080 等端口 | lsof -i :8080 查 PID,kill -9 PID 或调整 server.xml 端口 |
| ClassNotFoundException / NoClassDefFoundError | 依赖 JAR 缺失或版本冲突 | 将依赖放入 WEB-INF/lib,或修正版本;必要时清理工作目录后重部署 |
| OutOfMemoryError | 堆内存不足 | 调整 JAVA_OPTS(如 -Xms512m -Xmx1024m),优化应用内存使用 |
| SQLException / Connection refused | 数据库 URL、账号密码错误或数据库不可达 | 校验连接串、网络、账号权限;必要时调整连接池配置 |
| FileNotFoundException | 配置或文件路径错误 | 确认路径存在且 Tomcat 有访问权限 |
| 日志乱码 | 编码不一致 | 在 logging.properties 设置 java.util.logging.ConsoleHandler.encoding=UTF-8,并确保环境使用 UTF-8 |
| INVALID BYTE TAG IN CONSTANT POOL | 编译后的 class 文件冲突或损坏 | 清理应用目录的 classes 与冲突包,使用一致版本的编译产物重部署 |
四 提升日志可观测性与维护
- 调整日志级别:在 conf/logging.properties 提升特定包的日志级别以获取更详细异常信息,例如:
org.apache.catalina.core.*=FINE或org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level=FINE;修改后需重启使其生效。 - 日志轮转与清理:使用 logrotate 管理 catalina.out 等大文件,示例配置:
/usr/local/tomcat/logs/catalina.out { daily rotate 7 compress missingok notifempty copytruncate }
按需执行logrotate -f /etc/logrotate.conf测试轮转。 - 集中化与可视化:引入 ELK Stack(Elasticsearch/Logstash/Kibana)、Graylog 或 Fluentd,统一采集、检索、告警与可视化 Tomcat 日志。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Tomcat日志中异常如何处理
本文地址: https://pptw.com/jishu/772850.html
