在 Debian 系统上清理 Tomcat 日志,通常分为手动清理、自动清理(推荐)以及防止日志无限增长三种方式。下面按常见场景说明。
默认路径一般为:
/var/log/tomcat9/
或(取决于版本和安装方式):
/opt/tomcat/logs/
/usr/local/tomcat/logs/
常见日志文件:
catalina.out(最重要,最容易变大)catalina.2025-01-01.loglocalhost.logmanager.loghost-manager.logaccess_log_*.logsudo systemctl stop tomcat9
不停止也可以,但可能出现“文件已删除但磁盘未释放”的情况。
sudo rm -rf /var/log/tomcat9/*.log
sudo rm -rf /var/log/tomcat9/*.txt
sudo truncate -s 0 /var/log/tomcat9/catalina.out
或:
sudo cat /dev/null > /var/log/tomcat9/catalina.out
sudo systemctl start tomcat9
cron 定时清理编辑定时任务:
sudo crontab -e
每天凌晨清理 7 天前的日志:
0 3 * * * find /var/log/tomcat9 -type f -mtime +7 -delete
(可选)只清空 catalina.out:
0 3 * * * truncate -s 0 /var/log/tomcat9/catalina.out
logrotate(最推荐)Debian 通常自带 logrotate,可以配置 Tomcat 日志轮转。
创建或编辑配置:
sudo nano /etc/logrotate.d/tomcat9
示例配置:
/var/log/tomcat9/catalina.out {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
daily:每天轮转rotate 7:保留 7 份compress:压缩旧日志copytruncate:不重启 Tomcat 直接截断测试配置:
sudo logrotate -d /etc/logrotate.d/tomcat9
编辑:
sudo nano /etc/tomcat9/logging.properties
限制 catalina.out 输出(例如只输出 WARNING 以上):
1catalina.org.apache.juli.AsyncFileHandler.level = WARNING
⚠️ 注意:Tomcat 本身不会自动切割 catalina.out,必须配合 logrotate 或 cronolog。
如果删除日志后 df -h 磁盘没变:
sudo lsof | grep deleted
找到 Tomcat 相关进程,然后重启:
sudo systemctl restart tomcat9
✅ 生产环境最佳实践:
logrotate 管理 catalina.outcron 定期清理历史 .logrm catalina.out如果你愿意,可以告诉我:
我可以给你一份完全适配你系统的清理方案。