在 Ubuntu 上,Tomcat 日志通常会变得很大(如 catalina.out),需要按大小或按时间分割,常见做法有以下几种:
Ubuntu 自带 logrotate,非常适合分割 Tomcat 日志。
sudo vi /etc/logrotate.d/tomcat
示例配置(以 catalina.out 为例):
/var/log/tomcat*/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
说明:
daily:每天分割rotate 7:保留 7 份compress:压缩旧日志copytruncate:复制后清空原文件(Tomcat 不用重启)sudo logrotate -d /etc/logrotate.d/tomcat
强制执行一次:
sudo logrotate -f /etc/logrotate.d/tomcat
适合 catalina.out 按天生成文件。
sudo apt install cronolog
编辑:
sudo vi /opt/tomcat/bin/catalina.sh
找到:
>> "$CATALINA_OUT" 2>&1 &
改为:
2>&1 | /usr/bin/cronolog "$CATALINA_BASE/logs/catalina.%Y-%m-%d.out" &
重启 Tomcat 后日志会按天生成。
Tomcat 自带 java.util.logging,可限制大小。
编辑:
sudo vi /opt/tomcat/conf/logging.properties
示例:
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 = 7
1catalina.org.apache.juli.FileHandler.rotatable = true
(适合 catalina.log,不适合 catalina.out)
如果是应用自身日志,推荐:
log4j2 → RollingFileAppenderlogback → SizeAndTimeBasedRollingPolicy| 场景 | 推荐方式 |
|---|---|
| catalina.out | logrotate |
| 按天日志 | cronolog |
| 应用日志 | log4j / logback |
| 不想重启 | copytruncate |
如果你能告诉我:
systemd我可以给你更精确的配置。