温馨提示×

如何轮转ubuntu tomcat日志

小樊
34
2026-09-21 19:32:07
栏目: 智能运维

在 Ubuntu 上轮转(rotate)Tomcat 日志,常见有 两种思路

  1. 使用系统自带 logrotate(推荐)
  2. 使用 Tomcat 自带的 logging 配置 + 脚本

下面分别说明。


一、使用 logrotate(最常用、最省心)

Ubuntu 默认带 logrotate,Tomcat 日志一般在:

/var/log/tomcat9/        # Tomcat 9 示例
/opt/tomcat/logs/        # 自定义安装

1. 创建 logrotate 配置

新建配置文件:

sudo vim /etc/logrotate.d/tomcat

示例(Tomcat 9,Ubuntu 官方包):

/var/log/tomcat9/*.log
/var/log/tomcat9/*.txt {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    copytruncate
}

参数说明

  • daily:每天轮转
  • rotate 14:保留 14 份
  • compress:压缩旧日志
  • copytruncate:复制后清空原文件(Tomcat 不重启也能用
  • notifempty:空文件不轮转

⚠️ 如果你用 tomcat 用户运行,确保日志目录有写权限

2. 测试配置

sudo logrotate -d /etc/logrotate.d/tomcat

强制立即执行:

sudo logrotate -f /etc/logrotate.d/tomcat

二、轮转 catalina.out(重点)

catalina.out 不会自动切割,最容易爆盘

方法 A:logrotate + copytruncate(最简单)

/var/log/tomcat9/catalina.out {
    daily
    rotate 14
    compress
    copytruncate
    missingok
}

方法 B:使用 cronolog(老方案)

修改 bin/catalina.sh

CATALINA_OUT="$CATALINA_BASE/logs/catalina.%Y-%m-%d.out"

并用 cronolog 启动(不推荐新项目)。


三、Tomcat 自带 Logging(JULI)

如果你用的是 java.util.logging

编辑:

/etc/tomcat9/logging.properties

示例:

handlers = 1catalina.org.apache.juli.FileHandler

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

再配合 logrotate 即可。


四、常见坑

不要直接 mv catalina.out
→ Tomcat 仍持有文件句柄,磁盘不会释放

✅ 用 copytruncate 或重启 Tomcat


五、推荐方案(总结)

场景 推荐
Ubuntu 官方 Tomcat logrotate
自定义安装 Tomcat logrotate + copytruncate
容器环境 日志重定向到 stdout

如果你愿意,可以告诉我:

  • Tomcat 版本(8 / 9 / 10)
  • 安装方式(apt / 手动)
  • 日志路径

我可以给你精准配置

0