温馨提示×

Ubuntu如何分割Tomcat日志

小樊
40
2026-08-05 14:32:56
栏目: 智能运维

在 Ubuntu 上分割(切割、轮转)Tomcat 日志,常见做法有 三种
使用 logrotate(最推荐)
使用 Tomcat 自带日志配置(JULI)
使用 cronolog(较老方案)

下面按 生产环境最推荐方式 给你完整说明。


✅ 一、使用 logrotate(强烈推荐)

这是 Ubuntu / Linux 服务器 最标准、最省事 的方式。

1️⃣ Tomcat 日志在哪?

默认路径一般是:

/opt/tomcat/logs/
# 或
/var/log/tomcat9/

常见日志:

  • catalina.out(最重要)
  • localhost.log
  • manager.log
  • host-manager.log

2️⃣ 创建 logrotate 配置

sudo nano /etc/logrotate.d/tomcat

示例配置(适用于 Tomcat 9):

/opt/tomcat/logs/catalina.out {
    daily
    rotate 7
    missingok
    notifempty
    compress
    copytruncate
    dateext
    dateformat -%Y%m%d
}

✅ 说明:

参数 作用
daily 每天切割
rotate 7 保留 7 份
compress 压缩旧日志
copytruncate 不重启 Tomcat
dateext 日期后缀

生成效果:

catalina.out
catalina.out-20260121.gz
catalina.out-20260120.gz

3️⃣ 测试 logrotate

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

强制立即执行:

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

✅ 二、Tomcat 自带日志分割(JULI)

适合 不想用 logrotate 的情况。

1️⃣ 修改 logging.properties

路径:

/opt/tomcat/conf/logging.properties

示例:

1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7

⚠️ 缺点:

  • 只能按 天数
  • 功能不如 logrotate 灵活

✅ 三、使用 cronolog(不推荐新项目)

1️⃣ 安装

sudo apt install cronolog

2️⃣ 修改 Tomcat 启动脚本

编辑:

/opt/tomcat/bin/catalina.sh

找到:

>> "$CATALINA_OUT" 2>&1 &

改为:

2>&1 | /usr/bin/cronolog "$CATALINA_BASE/logs/catalina.%Y-%m-%d.out" &

⚠️ 缺点:

  • 需要修改启动脚本
  • 不如 logrotate 通用

✅ 四、推荐方案总结

方案 推荐度 说明
logrotate ⭐⭐⭐⭐⭐ 生产环境首选
Tomcat JULI ⭐⭐⭐ 仅适合简单需求
cronolog 老方案,不推荐

✅ 五、常见坑提醒

不要直接删除 catalina.out ✅ 使用 copytruncate 或重启 Tomcat
✅ 确保 Tomcat 用户有日志目录写权限
✅ 日志太大时优先压缩,而不是无限保留


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

  • Tomcat 版本
  • Ubuntu 版本
  • 是否 Docker / systemd 启动

我可以给你 完全定制的一套配置

0