在 Debian 上分割(切割、轮转)Tomcat 日志,常用且推荐的方式是 使用 logrotate,这是 Debian/Ubuntu 系统自带的日志管理工具,专门用来做日志轮转、压缩、删除。
下面按常见场景给你完整说明。
Tomcat 默认日志通常在:
/opt/tomcat/logs/
# 或
/var/log/tomcat9/
常见日志:
catalina.out(最重要,通常无限增长)localhost.logmanager.loghost-manager.logaccess.logdpkg -l | grep logrotate
如果没有:
sudo apt update
sudo apt install logrotate
sudo nano /etc/logrotate.d/tomcat
catalina.out)/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
dateext
}
| 参数 | 说明 |
|---|---|
| daily | 每天切割 |
| rotate 7 | 保留 7 份 |
| missingok | 日志不存在也不报错 |
| notifempty | 空文件不切割 |
| compress | 压缩旧日志 |
| copytruncate | 复制后清空原文件(Tomcat 不用重启) |
| dateext | 使用日期作为后缀 |
生成文件示例:
catalina.out-2026-01-21.gz
/opt/tomcat/logs/catalina.out
/opt/tomcat/logs/localhost.log
/opt/tomcat/logs/manager.log
/opt/tomcat/logs/host-manager.log
{
daily
rotate 7
missingok
notifempty
compress
copytruncate
dateext
}
sudo logrotate -d /etc/logrotate.d/tomcat
强制立即执行:
sudo logrotate -f /etc/logrotate.d/tomcat
编辑:
sudo nano /opt/tomcat/conf/server.xml
找到:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="combined" />
改为:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="combined"
rotatable="true"
fileDateFormat="yyyy-MM-dd" />
✅ Tomcat 会每天自动生成:
localhost_access_log.2026-01-21.txt
然后配合 logrotate 压缩即可。
❌ 直接删除 catalina.out(可能导致 Tomcat 无法写入)
❌ 用 echo > catalina.out(可能破坏文件 inode)
❌ 用 cron + kill -HUP(Tomcat 不是 Nginx)
✅ 可以,使用 copytruncate
默认每天执行一次:
/etc/cron.daily/logrotate
✅ 没有,方法通用
| 日志类型 | 推荐方式 |
|---|---|
| catalina.out | logrotate + copytruncate |
| 业务日志 | logrotate |
| access log | Tomcat AccessLogValve |
| 系统日志 | 不用管 |
如果你愿意,可以告诉我:
我可以帮你写一份完全适配你服务器的 logrotate 配置。