温馨提示×

怎样清理Ubuntu Tomcat旧日志

小樊
48
2025-10-13 15:02:22
栏目: 智能运维

1. 定位Tomcat日志文件路径
Tomcat的日志文件默认存储在{CATALINA_HOME}/logs目录下({CATALINA_HOME}为Tomcat安装路径,可通过echo $CATALINA_HOME命令查看)。常见日志文件包括catalina.out(主日志)、localhost_access_log.*.txt(访问日志)、manager.log(Manager应用日志)等。

2. 手动清理旧日志(临时方案)
若需立即清理,可通过以下步骤操作:

  • 停止Tomcat服务(避免文件占用导致删除失败):
    sudo systemctl stop tomcat 
  • 进入日志目录
    cd $CATALINA_HOME/logs 
  • 删除指定天数前的日志(例如删除7天前的.log文件):
    find . -type f -name "*.log" -mtime +7 -exec rm -rf {} \; 
  • 清空catalina.out文件(该文件持续增长,需定期清空):
    > catalina.out 
  • 重启Tomcat服务
    sudo systemctl start tomcat 

3. 使用Logrotate自动轮转与清理(推荐方案)
Logrotate是Linux系统自带的日志管理工具,可实现日志的自动切割、压缩、删除,避免手动操作。

  • 配置Logrotate
    编辑或创建/etc/logrotate.d/tomcat文件,添加以下内容(根据实际情况修改/path/to/tomcat/logs为真实路径):
    /path/to/tomcat/logs/catalina.out { daily # 每天轮转一次 rotate 7 # 保留7份日志(即删除7天前的) compress # 压缩旧日志(节省空间) missingok # 若日志文件不存在,不报错 notifempty # 若日志为空,不轮转 copytruncate # 复制原日志后清空,无需重启Tomcat } 
  • 测试配置有效性
    运行以下命令模拟日志轮转(-d表示干运行,不实际执行):
    sudo logrotate -d /etc/logrotate.d/tomcat 
    若无错误提示,说明配置正确。
  • 强制立即轮转(可选):
    sudo logrotate -f /etc/logrotate.d/tomcat 
  • 验证自动运行
    Logrotate默认通过系统cron任务(/etc/cron.daily/logrotate)每日自动执行,无需额外配置。

4. 编写Shell脚本自动化清理(灵活方案)
若需更定制化的清理逻辑(如同时清理访问日志、Manager日志),可编写脚本并通过cron定时执行:

  • 创建清理脚本(例如/opt/tomcat/scripts/clean_tomcat_logs.sh):
    #!/bin/bash LOG_PATH="$CATALINA_HOME/logs" # 删除7天前的所有.log文件(包括access log、manager log等) find "$LOG_PATH" -type f -name "*.log" -mtime +7 -exec rm -rf {} \; # 清空catalina.out > "$LOG_PATH/catalina.out" echo "$(date): Tomcat logs cleaned up." >> "$LOG_PATH/cleanup.log" 
  • 赋予脚本执行权限
    chmod +x /opt/tomcat/scripts/clean_tomcat_logs.sh 
  • 设置cron定时任务(例如每天凌晨1点执行):
    crontab -e 
    添加以下内容:
    0 1 * * * /opt/tomcat/scripts/clean_tomcat_logs.sh 

注意事项

  • 备份重要日志:清理前若需保留关键日志,可将日志文件复制到其他存储路径(如/backup)。
  • 调整保留天数:根据日志增长速度和存储空间,合理设置rotate参数(如rotate 30保留30天)。
  • 监控日志大小:若日志增长过快,可结合du -sh $CATALINA_HOME/logs命令定期检查日志目录大小,及时调整清理策略。

0