Ubuntu Tomcat日志中的异常如何排查
导读:Ubuntu Tomcat日志异常排查实操指南 一 定位日志与快速查看 常见日志目录:$CATALINA_HOME/logs(Tomcat安装目录下的 logs),或发行版包安装的 /var/log/tomcat。核心文件包括:catal...
Ubuntu Tomcat日志异常排查实操指南
一 定位日志与快速查看
- 常见日志目录:$CATALINA_HOME/logs(Tomcat安装目录下的 logs),或发行版包安装的 /var/log/tomcat。核心文件包括:catalina.out(标准输出/错误)、localhost.< 日期> .log(应用日志)、localhost_access_log.< 日期> .txt(访问日志)、以及按应用归档的 .log。
- 快速查看命令:
- 实时跟踪:
tail -f $CATALINA_HOME/logs/catalina.out - 关键字过滤:
grep -i "ERROR\|SEVERE\|Exception" $CATALINA_HOME/logs/catalina.out - 分页查看:
less $CATALINA_HOME/logs/catalina.out - 时间段定位:
sed -n '/2026-01-04 10:00:00/,/2026-01-04 10:05:00/p' $CATALINA_HOME/logs/catalina.out - 异常上下文:
cat -n catalina.out | grep -A5 -B5 "Exception"
以上路径与命令适用于 Ubuntu 环境下的 Tomcat 日志排查。
- 实时跟踪:
二 从日志中提取关键信息
- 关注要素:
- 时间戳(定位发生时刻)
- 日志级别(优先看 ERROR/WARN/SEVERE)
- 异常类型与消息(如 NullPointerException、SQLException)
- 完整堆栈跟踪(从你的代码或框架调用栈入手)
- 访问日志状态码(结合 localhost_access_log 分析 4xx/5xx 分布)
- 快速定位技巧:
- 先搜异常关键词(Exception/ERROR),再用行号或时间段缩小范围;
- 对大文件用
less搜索(输入/Exception回车,按n/N跳转); - 将异常发生时间点的前后日志一并审查,避免只看单行信息。
这些做法能显著提升定位效率,尤其是堆栈与访问日志的联动分析。
三 常见异常场景与处置要点
- 端口被占用:
- 检查:
sudo lsof -i:8080或ss -ltnp | grep 8080 - 处理:释放占用进程或调整 server.xml 的 Connector port。
- 检查:
- 启动失败/类缺失:
- 现象:ClassNotFoundException / NoClassDefFoundError
- 处理:检查 WEB-INF/lib 是否包含依赖,核对 classpath 与打包(war)是否完整。
- 内存不足:
- 现象:OutOfMemoryError
- 处理:检查堆/元空间设置(如
-Xms/-Xmx/-XX:MaxMetaspaceSize),优化代码与缓存策略。
- 数据库连接失败:
- 现象:SQLException、连接超时/拒绝
- 处理:核对 JDBC URL、用户名、密码、驱动版本,确认数据库可达与连接池配置。
- HTTP 状态码异常:
- 4xx(客户端问题):如 404(资源不存在)、403(权限不足)、400(请求语法错误)
- 5xx(服务端问题):如 500(应用异常)、503(服务不可用,常见于过载/维护)
结合日志中的异常类型与状态码,可快速判断是配置、代码、依赖还是资源瓶颈导致。
四 环境与配置核查
- 进程与端口:确认 Tomcat 进程 存在且监听正确端口(如 8080)。
- 配置文件:核查 $CATALINA_HOME/conf/server.xml(连接器、线程池、超时)、web.xml(过滤器/监听器)、以及应用的 context.xml 与数据源配置。
- 日志级别:在 $CATALINA_HOME/conf/logging.properties 中临时提升日志级别(如将相关 java.util.logging 级别调为 FINE/WARNING/SEVERE)以获取更详细输出,问题定位后再恢复。
- 资源与磁盘:检查 CPU、内存、磁盘空间 是否充足,避免因磁盘写满导致日志或应用异常。
- 日志轮转:使用 logrotate 管理 catalina.out 等日志,示例配置:
/opt/tomcat/logs/catalina.out { daily; rotate 7; compress; missingok; notifempty; copytruncate }
上述核查能排除环境与配置层面的共性问题,减少误报与漏报。
五 高效排查命令清单
- 实时看日志:
tail -f $CATALINA_HOME/logs/catalina.out - 查端口占用:
sudo lsof -i:8080或ss -ltnp | grep 8080 - 搜异常并看上下文:
cat -n catalina.out | grep -A10 -B10 "Exception" - 按时间段查看:
sed -n '/2026-01-04 10:00:00/,/2026-01-04 10:05:00/p' $CATALINA_HOME/logs/catalina.out - 统计 5xx 数量:
awk '$9 ~ /^5[0-9]{ 2} $/ { count++} END { print "5xx:", count} ' $CATALINA_HOME/logs/localhost_access_log.* - 查看进程:
ps aux | grep tomcat
这些命令覆盖从进程、端口到日志内容的全链路排查,适合日常快速定位与复盘。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Tomcat日志中的异常如何排查
本文地址: https://pptw.com/jishu/786288.html
