在 Ubuntu 上,Tomcat 日志轮转通常有两种方式:
logrotate(推荐,系统级管理)cronolog 等工具(较老方案)下面重点讲最常用、最规范的 logrotate 方案。
常见路径:
/var/log/tomcat9/
/var/log/tomcat/
/opt/tomcat/logs/
例如(以 tomcat9 为例):
sudo vim /etc/logrotate.d/tomcat
示例配置:
/var/log/tomcat9/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
daily:每天轮转rotate 14:保留 14 份compress:压缩旧日志delaycompress:延迟压缩(避免正在写)copytruncate:复制后清空原文件(Tomcat 不断进程最安全)notifempty:空文件不轮转⚠️ Tomcat 默认不会重新打开日志文件,必须用
copytruncate
sudo logrotate -d /etc/logrotate.d/tomcat
(只模拟,不真正执行)
真正执行:
sudo logrotate -f /etc/logrotate.d/tomcat
Ubuntu 默认已启用:
/etc/cron.daily/logrotate
无需额外配置。
Tomcat 使用 java.util.logging:
vim /opt/tomcat/conf/logging.properties
示例:
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
⚠️ 默认不支持按大小或时间自动切割 通常需要配合 logrotate 使用。
在 server.xml 中:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
rotatable="true" />
rotatable="true":按天生成access_log.2026-01-21.txt可再用 logrotate 压缩旧文件。
copytruncatecatalina.out 未轮转catalina.out 必须 logrotate/etc/logrotate.d/tomcat
copytruncate如果你用的是 Tomcat 版本 / 安装方式(apt 或二进制),我可以给你精确配置。