手动删除日志文件
定位Tomcat日志目录
Tomcat日志通常位于安装目录下的 logs/ 子目录中,常见路径:
/opt/tomcat/logs/ # 默认安装路径 /usr/local/tomcat/logs/ /home/user/tomcat/logs/
使用命令进入目录:
cd /opt/tomcat/logs/ # 替换为你的实际路径
查看并删除日志文件
-
查看日志文件列表:
ls -lh *.log *.txt *.out
主要文件包括:
catalina.out:主运行日志localhost_access_log.*.txt:访问日志catalina.yyyy-mm-dd.log:每日日志
-
删除指定日志(例如清理30天前的访问日志):
find . -name "localhost_access_log*.txt" -mtime +30 -exec rm -f {} \;-mtime +30:修改时间超过30天的文件-exec rm -f {} \;:强制删除匹配的文件
-
清空正在写入的日志(如
catalina.out):> catalina.out # 清空内容但保留文件(避免重启Tomcat)
自动清理方案(推荐)
使用 logrotate 工具
logrotate 是Linux自带的日志管理工具,可定时压缩、轮转和删除日志。
步骤:
-
创建配置文件:
sudo nano /etc/logrotate.d/tomcat
-
写入以下配置(按需调整):
/opt/tomcat/logs/catalina.out { daily # 每天轮转 rotate 7 # 保留7份旧日志 compress # 压缩旧日志 delaycompress # 延迟压缩(下次轮转时压缩) missingok # 文件不存在时不报错 notifempty # 空文件不轮转 copytruncate # 复制后清空原文件(无需重启Tomcat) } /opt/tomcat/logs/localhost_access_log*.txt { monthly # 每月轮转 rotate 6 # 保留6个月 compress missingok } -
手动测试配置:
sudo logrotate -f /etc/logrotate.d/tomcat
通过 cron 定时任务
定期执行清理脚本(例如每天凌晨2点):
- 创建脚本
/opt/scripts/clean_tomcat_logs.sh:#!/bin/bash LOG_DIR="/opt/tomcat/logs" find $LOG_DIR -name "*.log" -mtime +15 -exec rm -f {} \; find $LOG_DIR -name "*.txt" -mtime +30 -exec rm -f {} \; - 添加可执行权限:
chmod +x /opt/scripts/clean_tomcat_logs.sh
- 加入cron计划:
crontab -e
添加行:
0 2 * * * /opt/scripts/clean_tomcat_logs.sh
关键注意事项
-
避免直接删除正在写入的日志
- 使用
> catalina.out清空而非rm,防止Tomcat因文件句柄丢失报错。 - 若必须删除,先重启Tomcat:
sudo systemctl restart tomcat。
- 使用
-
备份重要日志
删除前确认日志无保留价值,必要时备份:cp catalina.out catalina_$(date +%F).backup
-
权限问题
- 若提示权限不足,使用
sudo或切换为Tomcat用户(通常为tomcat):sudo -u tomcat find /opt/tomcat/logs/ -name "*.log" -mtime +30 -delete
- 若提示权限不足,使用
最佳实践建议
- 首选
logrotate:自动化管理更安全,避免手动误删。 - 监控磁盘空间:设置告警(如
df -h或工具如Nagios)。 - 日志分级保留:访问日志保留30天,调试日志保留7天。
- 生产环境慎用
rm -rf:误操作可能导致系统崩溃,建议先ls确认文件列表。
引用说明:本文方法基于Linux文件管理通用实践及Apache Tomcat官方文档。
logrotate配置参考了Red Hat Enterprise Linux手册,cron用法遵循Linux标准定时任务规范,具体路径请根据实际Tomcat安装位置调整。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8781.html