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系统自带的日志管理工具,可自动轮转、压缩、删除旧日志。
/etc/logrotate.d/tomcat),添加以下内容(替换为实际路径):/path/to/tomcat/logs/catalina.out {
daily # 每天轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志(如catalina.out.1.gz)
missingok # 日志不存在时不报错
notifempty # 日志为空时不轮转
copytruncate # 复制原日志后清空(避免重启Tomcat)
}
/path/to/tomcat/logs/*.log {
daily
rotate 14
compress
missingok
notifempty
}
/path/to/tomcat/logs/*.txt {
daily
rotate 30
compress
missingok
notifempty
}
sudo logrotate -vf /etc/logrotate.d/tomcat
优势:无需手动干预,支持压缩归档,节省磁盘空间。
4. 调整Tomcat日志配置(从源头控制日志增长)
通过修改Tomcat配置文件,限制日志文件大小和保留天数:
conf/logging.properties(针对Java Util Logging):1catalina.org.apache.juli.FileHandler等处理器,添加maxDays参数(保留天数):1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.maxDays = 14 # 保留14天
conf/server.xml(针对Access Log):<Host>标签内找到AccessLogValve,添加maxDays属性:<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="${catalina.base}/logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
maxDays="7" /> # 保留7天
优势:从日志生成源头控制大小和保留时间,减少后续清理工作量。
注意事项
catalina.out)的清理。