温馨提示×

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 指标并设置告警,配合日志实现可观测性闭环

0