debian

如何清理Debian Tomcat的旧日志文件

小樊
42
2025-09-18 19:25:55
栏目: 智能运维

1. 手动清理旧日志文件(临时解决磁盘空间问题)
首先定位Tomcat日志目录(默认路径通常为/var/log/tomcat//opt/tomcat/logs/,可通过sudo find / -name "catalina.out"sudo find / -name "localhost.*.log"确认)。使用find命令删除指定时间前的旧日志(如30天前):

# 删除30天前的.log和.txt日志文件
find /path/to/tomcat/logs/ -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
find /path/to/tomcat/logs/ -type f -name "*.txt" -mtime +30 -exec rm -rf {} \;
# 特别处理catalina.out(Tomcat主日志文件,需单独清空而非删除)
sudo truncate -s 0 /path/to/tomcat/logs/catalina.out  # 清空内容(保留文件)
# 或备份后删除(需停止Tomcat服务)
sudo systemctl stop tomcat
sudo mv /path/to/tomcat/logs/catalina.out /path/to/tomcat/logs/catalina.out.bak
sudo touch /path/to/tomcat/logs/catalina.out  # 创建新文件
sudo systemctl start tomcat

注意:手动清理前建议备份重要日志(如cp catalina.out ~/catalina_backup_$(date +%F).out),避免误删。

2. 使用Shell脚本自动化清理(减少重复操作)
创建Shell脚本(如/usr/local/bin/clean_tomcat_logs.sh),添加以下内容(替换为实际日志路径):

#!/bin/bash
LOG_PATH="/path/to/tomcat/logs"
# 删除30天前的.log、.txt和access log文件
find "$LOG_PATH" -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
find "$LOG_PATH" -type f -name "*.txt" -mtime +30 -exec rm -rf {} \;
find "$LOG_PATH" -type f -name "localhost_access_log.*.txt" -mtime +30 -exec rm -rf {} \;
# 清空catalina.out(避免文件过大)
truncate -s 0 "$LOG_PATH/catalina.out"
echo "$(date '+%F %T') - Tomcat logs cleaned up." >> "$LOG_PATH/cleanup.log"  # 记录清理日志

赋予脚本执行权限:

sudo chmod +x /usr/local/bin/clean_tomcat_logs.sh

优势:脚本可扩展(如添加邮件通知),适合定期执行。

3. 配置logrotate工具(推荐:自动化轮转与压缩)
logrotate是Linux系统自带的日志管理工具,可自动轮转、压缩、删除旧日志。

优势:无需手动干预,支持压缩归档,节省磁盘空间。

4. 调整Tomcat日志配置(从源头控制日志增长)
通过修改Tomcat配置文件,限制日志文件大小和保留天数:

优势:从日志生成源头控制大小和保留时间,减少后续清理工作量。

注意事项

0
看了该问题的人还看了