首页主机资讯Ubuntu下如何清理Tomcat旧日志

Ubuntu下如何清理Tomcat旧日志

时间2025-10-09 20:56:04发布访客分类主机资讯浏览1206
导读:Ubuntu下清理Tomcat旧日志的常用方法 1. 手动清理(一次性操作) 步骤: 停止Tomcat服务(避免清理过程中日志写入导致文件损坏):sudo systemctl stop tomcat # 通过systemd管理的服务 #...

Ubuntu下清理Tomcat旧日志的常用方法

1. 手动清理(一次性操作)

步骤

  • 停止Tomcat服务(避免清理过程中日志写入导致文件损坏):
    sudo systemctl stop tomcat  # 通过systemd管理的服务
    # 或
    sudo /opt/tomcat/bin/shutdown.sh  # 脚本启动的Tomcat
    
  • 进入日志目录(常见路径为/var/log/tomcat/opt/tomcat/logs,可通过echo $CATALINA_HOME确认CATALINA_HOME环境变量):
    cd /var/log/tomcat  # 或 $CATALINA_HOME/logs
    
  • 删除旧日志(以7天前为例,保留最近7天的.log文件):
    sudo find . -type f -name "*.log" -mtime +7 -exec rm -rf {
    }
         \;
          # 删除7天前的.log文件
    sudo >
     catalina.out  # 清空catalina.out(Tomcat主日志文件,无日志轮转时会无限增长)
    
  • 重启Tomcat(恢复服务):
    sudo systemctl start tomcat  # 或 sudo /opt/tomcat/bin/startup.sh
    

注意:手动清理适用于临时解决日志满的问题,需定期执行或配合自动化工具使用。

2. 使用Logrotate自动轮转(推荐)

Logrotate是Linux系统自带的日志管理工具,可自动完成日志的切割、压缩、删除,无需手动干预。
配置步骤

  • 安装Logrotate(Ubuntu默认已安装,未安装则执行):
    sudo apt-get install logrotate
    
  • 创建Tomcat专用配置文件/etc/logrotate.d/tomcat):
    sudo nano /etc/logrotate.d/tomcat
    
  • 添加以下内容(根据实际情况调整路径和参数):
    /var/log/tomcat/*.log {
        
        daily                # 每天轮转一次
        rotate 7             # 保留7天的日志文件
        compress             # 压缩旧日志(如catalina.out.1.gz)
        missingok            # 日志文件不存在时不报错
        notifempty           # 日志为空时不轮转
        create 640 tomcat tomcat  # 新日志文件的权限和所有者(需与Tomcat运行用户一致)
        postrotate
            /bin/kill -USR1 $(cat /var/run/tomcat.pid) 2>
    /dev/null || true  # 向Tomcat发送信号,使其重新打开日志文件
        endscript
    }
    
    
    说明
    • daily:轮转频率(可改为weekly/monthly);
    • rotate 7:保留最近7天的日志(可根据磁盘空间调整);
    • postrotate:轮转后执行的命令,确保Tomcat能继续写入新日志。
  • 测试配置(模拟运行,不实际删除文件):
    sudo logrotate -d /etc/logrotate.d/tomcat
    
  • 强制立即轮转(可选):
    sudo logrotate -f /etc/logrotate.d/tomcat
    

Logrotate会自动添加到系统定时任务(/etc/cron.daily/logrotate),无需额外设置。

3. 编写Shell脚本自动化清理

若需要更灵活的清理逻辑(如清理特定模式的日志),可编写脚本并通过cron定时执行。
脚本示例/opt/tomcat/scripts/clean_tomcat_logs.sh):

#!/bin/bash
# 定义Tomcat日志路径
LOG_PATH="/var/log/tomcat"
# 删除7天前的.log文件
find "$LOG_PATH" -type f -name "*.log" -mtime +7 -exec rm -rf {
}
     \;
    
# 清空catalina.out
>
 "$LOG_PATH/catalina.out"

设置权限

sudo chmod +x /opt/tomcat/scripts/clean_tomcat_logs.sh

添加定时任务(每天凌晨0点执行):

sudo crontab -e

添加以下内容:

0 0 * * * /opt/tomcat/scripts/clean_tomcat_logs.sh

说明:脚本需赋予执行权限,cron会自动调用脚本完成任务。

4. 调整Tomcat日志配置(从源头减少日志量)

通过修改Tomcat的日志配置,可降低日志生成速率,减少旧日志的积累。

  • 修改logging.properties$CATALINA_HOME/conf/logging.properties):
    # 设置日志级别为WARNING(减少INFO级别的冗余日志)
    .handlers = 1catalina.org.apache.juli.AsyncFileHandler
    1catalina.org.apache.juli.AsyncFileHandler.level = WARNING
    1catalina.org.apache.juli.AsyncFileHandler.directory = ${
    catalina.base}
        /logs
    1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
    1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7  # 保留7天的日志
    
  • 修改server.xml$CATALINA_HOME/conf/server.xml):
    若不需要访问日志,可注释掉AccessLogValve配置:
    <
        !-- 
    <
        Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t "%r" %s %b" />
        
    -->
        
    

注意:调整日志级别需权衡“调试便利性”与“日志体积”,建议生产环境保留WARNING及以上级别。

以上方法可根据实际需求组合使用,推荐优先配置Logrotate(自动化程度高),再配合脚本或配置调整优化日志管理。

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


若转载请注明出处: Ubuntu下如何清理Tomcat旧日志
本文地址: https://pptw.com/jishu/721761.html
Linux系统如何开启Telnet服务 Linux GIMP路径工具使用技巧

游客 回复需填写必要信息