如何使用Debian Tomcat日志进行故障排查
导读:Debian Tomcat 日志故障排查实操指南 一 定位日志目录与关键文件 常见日志目录:/var/log/tomcat、/var/log/tomcatX(X 为版本号)、/opt/tomcat/logs、/usr/local/tomc...
Debian Tomcat 日志故障排查实操指南
一 定位日志目录与关键文件
- 常见日志目录:/var/log/tomcat、/var/log/tomcatX(X 为版本号)、/opt/tomcat/logs、/usr/local/tomcat/logs。若不确定,可查看 server.xml 中 AccessLogValve 的 directory/prefix 属性,或在系统中用命令查找:
- 查找进程与目录:ps -ef | grep tomcat;ls /var/log/tomcat*;ls /opt/tomcat/logs
- 关键日志与作用:
- catalina.out:标准输出/错误全量输出,常用于实时观察启动与运行期错误。
- catalina.yyyy-MM-dd.log:按日期的 Tomcat 引擎日志,记录启动/关闭与重要事件。
- localhost.yyyy-MM-dd.log:应用上下文日志(应用内日志通常在这里)。
- localhost_access_log.yyyy-MM-dd.txt:访问日志(需在 server.xml 中启用 AccessLogValve)。
- 管理类:manager.yyyy-MM-dd.log、host-manager.yyyy-MM-dd.log。
二 快速定位问题的命令与技巧
- 实时查看与关键字过滤:
- 实时跟踪:tail -f /var/log/tomcat/catalina.out
- 错误与异常:grep -i “ERROR\|Exception\|Failed” catalina.out
- 时间段定位:sed -n ‘/2025-11-18 10:00:00/,/2025-11-18 10:10:00/p’ catalina.out
- 访问与业务分析:
- 查看访问日志:less /var/log/tomcat/localhost_access_log.2025-11-18.txt
- 按 IP/时间筛选:grep “192.168.1.10” localhost_access_log*;grep “2025-11-18” localhost_access_log*
- 统计高频 URL:cat localhost_access_log* | awk ‘{ print $7} ’ | sort | uniq -c | sort -nr | head
- 端口与进程排查:
- 检查端口占用:ss -ltnp | grep 8080 或 lsof -i :8080
- 释放端口:kill -9 (谨慎,先确认业务影响)
三 常见错误模式与处置
- 端口被占用(Address already in use)
- 现象:启动失败,日志出现 “Address already in use”。
- 处置:ss -ltnp | grep 8080 找到 PID,kill -9 ;或调整 server.xml 中 Connector port。
- 应用启动失败(ClassNotFound、FileNotFoundException 等)
- 现象:catalina.out/localhost 中出现类缺失或文件找不到。
- 处置:核对 WEB-INF/lib 依赖、配置文件路径、应用包是否完整;必要时查看 work 与 temp 目录清理缓存后重启。
- 数据库连接失败(Connection refused/Access denied)
- 现象:日志出现 “Connection failed/Access denied for user”。
- 处置:核对 JDBC URL、用户名、密码、驱动版本 与数据库网络可达性;确认数据库服务可用。
- 权限与目录不可写
- 现象:启动或运行期出现 “Permission denied”。
- 处置:检查 logs、应用目录权限与属主,例如:chown -R tomcat:tomcat /opt/tomcat;chmod 755 /opt/tomcat;chmod 644 /opt/tomcat/conf/*.xml。
四 提升日志可观测性与维护
- 调整日志级别(精细排查)
- 编辑 $CATALINA_BASE/conf/logging.properties,为关键包提升级别,例如:
- .level = INFO
- org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
- org.apache.coyote.level = FINE
- 重启 Tomcat 生效。
- 编辑 $CATALINA_BASE/conf/logging.properties,为关键包提升级别,例如:
- 访问日志启用与格式
- 在 server.xml 的 Host 内配置:
- < Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs” prefix=“localhost_access_log” suffix=“.txt” pattern=“%h %l %u %t “%r” %s %b” />
- 常见 pattern:%h %l %u %t “%r” %s %b(客户端IP、用户、时间、请求行、状态码、字节数)。
- 在 server.xml 的 Host 内配置:
- 日志轮转与归档
- 使用 logrotate 管理 catalina.out(避免无限增长):
- /etc/logrotate.d/tomcat:
- /opt/tomcat/logs/catalina.out {
- daily; rotate 30; compress; missingok; copytruncate; create 600 tomcat tomcat
- }
- /opt/tomcat/logs/catalina.out {
- /etc/logrotate.d/tomcat:
- 也可使用 cronolog 按日期分割 catalina 输出(需修改启动脚本)。
- 使用 logrotate 管理 catalina.out(避免无限增长):
- JVM 与内存问题排查
- 获取 Tomcat PID:pgrep -f tomcat
- GC 与内存:jstat -gcutil 1000
- 结合日志时间戳与 GC 信息判断是否存在内存泄漏或频繁 Full GC。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何使用Debian Tomcat日志进行故障排查
本文地址: https://pptw.com/jishu/751368.html
