在 Ubuntu 上清理 Tomcat 日志 通常分为 手动清理、自动清理(推荐) 和 日志轮转 三种方式。下面按常见场景说明。
默认情况下,Tomcat 日志在:
/opt/tomcat/logs/
# 或
/var/log/tomcat*/
常见日志文件包括:
| 文件 | 说明 |
|---|---|
catalina.out |
主日志(最容易变大) |
catalina.2025-01-01.log |
按日期的 catalina 日志 |
localhost.*.log |
应用日志 |
access_log.*.txt |
访问日志 |
manager.*.log |
Manager 应用日志 |
sudo systemctl stop tomcat
# 或
sudo /opt/tomcat/bin/shutdown.sh
cd /opt/tomcat/logs
sudo rm -f *.log *.txt
⚠️ 清理 catalina.out 的正确方式(不要直接 rm)
sudo truncate -s 0 catalina.out
或直接:
sudo > catalina.out
✅ 不删除文件,避免 Tomcat 文件句柄异常。
cron 定期清理编辑定时任务:
sudo crontab -e
添加(每天凌晨 2 点清理 7 天前的日志):
0 2 * * * find /opt/tomcat/logs -type f -mtime +7 -exec rm -f {} \;
或只清理 .log 和 .txt:
0 2 * * * find /opt/tomcat/logs -name "*.log" -mtime +7 -delete
0 2 * * * find /opt/tomcat/logs -name "*.txt" -mtime +7 -delete
logrotate(最推荐 ✅)Ubuntu 自带 logrotate,适合长期管理。
sudo nano /etc/logrotate.d/tomcat
内容示例:
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
sudo logrotate -d /etc/logrotate.d/tomcat
✅ copytruncate 可以在不重启 Tomcat 的情况下清空日志。
catalina.out 无限增长(重要)logging.propertiessudo nano /opt/tomcat/conf/logging.properties
关闭 console 输出(推荐生产环境):
.handlers = 1catalina.org.apache.juli.AsyncFileHandler
cronolog 切分 catalina.out(老项目常用)sudo apt install cronolog
修改 catalina.sh:
CATALINA_OUT="/opt/tomcat/logs/catalina.%Y-%m-%d.log"
sudo truncate -s 0 /opt/tomcat/logs/catalina.out
sudo find /opt/tomcat/logs -name "*.log" -mtime +3 -delete
| 场景 | 推荐方式 |
|---|---|
| 临时清理 | truncate |
| 定期清理 | cron + find |
| 长期稳定 | logrotate |
| 生产环境 | logrotate + 关闭 console 输出 |
如果你愿意,可以告诉我:
我可以帮你写一份 完全适配你服务器的清理方案。