Tomcat在Linux上的错误日志怎么处理
小樊
42
2025-12-12 22:13:16
Tomcat在Linux上的错误日志处理指南
一 定位日志文件
- 默认日志目录为 $CATALINA_HOME/logs,常见文件与作用如下:
- catalina.out:标准输出与标准错误,包含启动、运行与错误堆栈。
- catalina.[日期].log:按日期的 Catalina 引擎日志。
- localhost.[日期].log:与本地主机相关的事件与异常。
- localhost_access_log.[日期].txt:访问日志(HTTP 请求)。
- manager.[日期].log / host-manager.[日期].log:管理应用日志。
- 发行版或安装方式不同,目录可能为 /var/log/tomcat[版本号]/ 或 /opt/tomcat/logs/;如未设置 $CATALINA_HOME,可用命令查找:
- 查看安装目录:echo $CATALINA_HOME
- 快速定位日志:ls $CATALINA_HOME/logs 或 ls /var/log/tomcat**
二 快速查看与分析
- 实时查看最新输出:tail -f $CATALINA_HOME/logs/catalina.out
- 过滤关键字:grep -i “ERROR|Exception|Failed” $CATALINA_HOME/logs/catalina.out
- 分页与检索:less $CATALINA_HOME/logs/catalina.out;按时间段查看可用 sed:
- sed -n ‘/2025-12-12 10:00:00/,/2025-12-12 10:05:00/p’ $CATALINA_HOME/logs/catalina.out
- 分析要点:优先关注 ERROR/WARN 级别、异常类型(如 NullPointerException、SQLException)、时间戳与完整堆栈跟踪,定位到具体类与行号
三 常见错误与处置
- 端口被占用(BindException: Address already in use)
- 查占用:ss -tlnp | grep 8080 或 netstat -tulpen | grep 8080
- 处置:kill -9 或修改 conf/server.xml 的 后重启
- 内存溢出(OutOfMemoryError)
- 处置:调整 JAVA_OPTS,如 export JAVA_OPTS=“-Xms512m -Xmx1024m”(按业务与容器内存合理设置),重启生效
- 权限不足
- 处置:chown -R tomcat:tomcat $CATALINA_HOME,必要时 chmod 调整目录权限
- 依赖缺失(ClassNotFoundException / NoClassDefFoundError)
- 处置:检查 WEB-INF/lib 是否包含所需 JAR,补齐依赖后重启
四 日志轮转与清理
- 使用 logrotate 进行按日轮转、压缩与保留(示例):
- 新建配置:/etc/logrotate.d/tomcat
- 内容示例:
- /opt/tomcat/logs/catalina.out {
- daily
- rotate 7
- compress
- missingok
- notifempty
- copytruncate
- }
- 说明:copytruncate 适用于被进程持续持有的日志文件;如采用进程重新打开日志的方案,可改用 create/rotate 指令配合日志框架的重新打开机制
五 进阶 日志级别与集中化
- 调整日志级别:编辑 conf/logging.properties,如将 org.apache.catalina.core 设为 FINE/DEBUG 以获取更详细输出(生产慎用 DEBUG)
- 集中化与分析:
- 使用 ELK Stack(Elasticsearch、Logstash、Kibana) 或 Splunk/Graylog 收集、检索与可视化日志
- 结合 Prometheus + Grafana 监控 Tomcat 指标并设置告警,配合日志实现可观测性闭环