在 Linux 下,Tomcat 日志切割常见有几种方式,从“最简单”到“最规范”依次介绍,你可以按需求选择。
logrotate(系统自带,最规范)Tomcat 默认日志在:
$CATALINA_HOME/logs/
常见日志:
catalina.outlocalhost.loghost-manager.logmanager.log新建文件:
/etc/logrotate.d/tomcat
示例配置(重点:catalina.out):
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
如果是多日志:
/opt/tomcat/logs/*.log
/opt/tomcat/logs/catalina.out {
daily
rotate 15
missingok
notifempty
compress
copytruncate
}
daily:每天切割rotate 7:保留 7 份compress:压缩旧日志copytruncate:不重启 Tomcat 就能切割(非常重要)logrotate -d /etc/logrotate.d/tomcat # 模拟
logrotate -f /etc/logrotate.d/tomcat # 强制执行
✅ 这是生产环境最推荐方式
Tomcat 的 logging.properties 可以切割 localhost.log 等,但:
yum install cronolog
# 或
apt install cronolog
找到:
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 &
改为:
org.apache.catalina.startup.Bootstrap "$@" start \
2>&1 | /usr/bin/cronolog "$CATALINA_BASE/logs/catalina.%Y-%m-%d.out" &
⚠️ 需要重启 Tomcat
如果你用 Spring Boot / 新 Tomcat:
log4j2RollingFileAppender✅ 最灵活
❌ 配置复杂
| 场景 | 推荐方案 |
|---|---|
| 生产 Tomcat | ✅ logrotate |
| 不想改配置 | ✅ logrotate |
| 老系统 | cronolog |
| 新项目 | log4j2 |
如果你愿意,可以告诉我:
我可以帮你写完整可直接用的配置。