首页主机资讯Linux Tomcat日志管理方法

Linux Tomcat日志管理方法

时间2025-11-19 09:04:03发布访客分类主机资讯浏览1074
导读:Linux Tomcat日志管理方法 一 日志类型与存放路径 常见日志与用途 catalina.out:标准输出与错误输出重定向文件,包含启动、运行与异常堆栈,最容易无限增长。 catalina.yyyy-mm-dd.log:按日期切分...

Linux Tomcat日志管理方法

一 日志类型与存放路径

  • 常见日志与用途
    • catalina.out:标准输出与错误输出重定向文件,包含启动、运行与异常堆栈,最容易无限增长。
    • catalina.yyyy-mm-dd.log:按日期切分的运行日志(JULI 文件日志)。
    • localhost.yyyy-mm-dd.log:本地主机相关日志(应用部署与主机级事件)。
    • localhost_access_log.yyyy-mm-dd.txt:访问日志,记录每个 HTTP 请求。
    • manager.log / host-manager.log:管理应用日志。
  • 默认路径
    • 常见为 $CATALINA_HOME/logs/var/log/tomcat(发行版打包版常见)。

二 日常查看与快速排查

  • 实时查看与过滤
    • 实时跟踪:tail -f /var/log/tomcat/catalina.out
    • 关键字过滤:grep -i ‘ERROR’ /var/log/tomcat/catalina.out
    • 分页查看:less /var/log/tomcat/catalina.out
    • 时间段查看(示例):sed -n ‘/2025-11-19 10:00:00/,/2025-11-19 10:10:00/p’ /var/log/tomcat/catalina.out
  • 排查要点
    • 优先关注 ERROR/WARN 级别与异常堆栈;结合时间戳定位问题发生时刻与上下文。

三 日志轮转与清理

  • 推荐方案:使用 logrotate(系统自带、稳定可靠)
    • 创建配置:/etc/logrotate.d/tomcat
      /opt/tomcat/logs/catalina.out {
      
          daily
          rotate 7
          compress
          missingok
          notifempty
          copytruncate
      }
      
      /opt/tomcat/logs/catalina.*.log {
      
          daily
          rotate 7
          compress
          missingok
          notifempty
          copytruncate
      }
      
      /opt/tomcat/logs/localhost.*.log {
      
          daily
          rotate 7
          compress
          missingok
          notifempty
          copytruncate
      }
          
      
    • 测试与执行
      • 语法检查:logrotate -d /etc/logrotate.d/tomcat
      • 强制执行:logrotate -f /etc/logrotate.d/tomcat
    • 说明
      • copytruncate 适用于被外部进程持续持有的 catalina.out;JULI 按日期切分的日志(如 catalina.*.log)也可用相同策略或配合 size 触发。
  • 备选方案:使用 cronolog 按日期生成日志文件
    • 思路:修改 bin/catalina.sh 的启动命令,将标准输出重定向到 cronolog,例如:
      org.apache.catalina.startup.Bootstrap "$@" start \
        |/usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina.%Y-%m-%d.out" >
          /dev/null 2>
          &
          1 &
          
      
    • 重启 Tomcat 生效;此方式天然避免 catalina.out 无限增长。
  • 自动清理脚本(配合 cron)
    • 示例(保留 30 天):
      #!/usr/bin/env bash
      LOG_DIR="/opt/tomcat/logs"
      find "$LOG_DIR" -mtime +30 -name "catalina.*.log" -delete
      find "$LOG_DIR" -mtime +30 -name "localhost.*.log" -delete
      >
           "$LOG_DIR/catalina.out"
      
    • 赋权并加入 crontab(每日 02:00 执行):
      0 2 * * * /opt/tomcat/bin/clean_tomcat_logs.sh
      
  • 紧急处理(谨慎)
    • 备份后清空:mv catalina.out catalina.out.bak & & touch catalina.out
    • 直接清空:> catalina.out(会丢失当前日志,仅限应急)。

四 访问日志配置与保留策略

  • conf/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" />
        
    
  • 关键属性
    • rotatable:启用按日期切分。
    • maxDays:保留最近 N 天的访问日志,过期自动删除。

五 性能优化与日志级别

  • 调整日志级别(减少噪音与 I/O)
    • 编辑 conf/logging.properties
      org.apache.catalina.level = WARNING
      org.apache.catalina.startup.level = WARNING
      
  • 使用异步日志(提升高并发下性能,Tomcat 8+)
    • 将 ConsoleHandler 替换为 AsyncFileHandler
      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
      
  • 说明
    • 异步日志可显著降低同步写磁盘带来的线程阻塞,适合访问量较大的场景。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux Tomcat日志管理方法
本文地址: https://pptw.com/jishu/750851.html
如何提高Linux Tomcat并发能力 openssl更新后ubuntu如何验证

游客 回复需填写必要信息