温馨提示×

Linux Tomcat如何进行日志管理

小樊
35
2025-12-08 22:34:59
栏目: 智能运维

Linux Tomcat日志管理实操指南

一 日志类型与存放路径

  • 日志默认位于 $CATALINA_HOME/logs,常见文件与作用如下:
    • catalina.out:标准输出/错误重定向文件,默认不自动切割,长期写入易膨胀。
    • catalina.yyyy-MM-dd.log:Catalina 引擎运行日志,按日期切分。
    • localhost.yyyy-MM-dd.log:应用初始化、未处理异常等。
    • localhost_access_log.yyyy-MM-dd.txt:访问日志,需在 server.xml 中启用。
    • manager.yyyy-MM-dd.log / host-manager.yyyy-MM-dd.log:管理应用日志。
  • 建议在 $CATALINA_BASE/conf/logging.properties 中调整日志级别与输出方式,在 $CATALINA_BASE/conf/server.xml 中配置访问日志 Valve。

二 核心配置与常用做法

  • 调整日志级别(减少噪音/定位问题)
    • 编辑 conf/logging.properties,将全局或指定 Logger 级别调为 WARNING/ERROR 等;如:
      • 全局或组件级别:org.apache.catalina.level = WARNING
      • 启动阶段:org.apache.catalina.startup.level = WARNING
    • 修改后需重启 Tomcat 生效。
  • 启用并配置访问日志(server.xml)
    • 取消注释并调整 AccessLogValve,示例:
      <Valve className="org.apache.catalina.valves.AccessLogValve"
             directory="logs"
             prefix="localhost_access_log"
             suffix=".txt"
             rotatable="true"
             maxDays="30"
             pattern="%h %l %u %t "%r" %s %b" />
      
    • 常用 pattern:common(%h %l %u %t %r %s %b)、combined(在 common 基础上增加 RefererUser-Agent)。
  • 启用异步日志(降低同步写磁盘对性能的影响)
    • 将 FileHandler 替换为 AsyncFileHandler(Tomcat 8+ 支持):
      handlers = 1catalina.org.apache.juli.AsyncFileHandler, \
                 2localhost.org.apache.juli.AsyncFileHandler, \
                 3manager.org.apache.juli.AsyncFileHandler, \
                 4host-manager.org.apache.juli.AsyncFileHandler, \
                 java.util.logging.ConsoleHandler
      
    • 可按需为各 Logger 设置 level(如 FINE/INFO/WARNING)。

三 日志轮转与清理

  • 使用 logrotate 管理 catalina.out 及按日期切分的日志
    • 新建 /etc/logrotate.d/tomcat
      /opt/tomcat/logs/catalina.out {
          copytruncate
          daily
          rotate 7
          compress
          missingok
          notifempty
      }
      /opt/tomcat/logs/catalina.*.log {
          copytruncate
          daily
          rotate 7
          compress
          missingok
      }
      /opt/tomcat/logs/localhost.*.log {
          copytruncate
          daily
          rotate 7
          compress
          missingok
      }
      
    • 说明:copytruncate 适用于被进程持续持有的文件(如 catalina.out);按日期切分的日志也可用 copytruncate 或配合脚本清理。
  • 定时清理旧日志(可选)
    • 示例脚本(删除 7 天前 .log):
      #!/bin/bash
      find /opt/tomcat/logs/ -type f -mtime +7 -name "*.log" -delete
      
    • 加入 crontab0 0 * * * /opt/tomcat/bin/cleanup_logs.sh

四 监控与告警

  • 集中化日志与可视化
    • 使用 Filebeat → Logstash → Elasticsearch → Kibana(ELK) 采集并分析 catalina.out、访问日志等,构建仪表盘与告警规则。
  • 主机与业务监控
    • 使用 Zabbix 通过脚本/索引统计异常数量,设置触发器进行告警;也可选用 GraylogSplunk 等平台。

五 安全与维护建议

  • 权限最小化
    • 通过 catalina.shUMASK 控制日志文件权限,例如:UMASK 0022,避免敏感信息被非授权用户读取。
  • 访问控制与信息泄露防护
    • 限制日志目录访问权限;隐藏或更改响应头 Server 字段,降低版本暴露风险。
  • 审计与巡检
    • 定期检查 catalina.outlocalhost.log* 中的异常堆栈、权限错误、频繁 4xx/5xx 等,结合监控平台设置阈值告警。

0