温馨提示×

如何分割Debian Tomcat日志

小樊
42
2026-07-27 18:06:07
栏目: 智能运维

在 Debian 上分割(切割、轮转)Tomcat 日志,常见做法有 logrotate(推荐)Tomcat 自带 logging 配置、以及 cronolog 等工具。下面按使用频率从高到低说明。


一、使用 logrotate(最推荐 ✅)

Debian 默认已安装 logrotate,适合管理 catalina.out 等持续增长的日志。

1️⃣ 创建 logrotate 配置文件

sudo nano /etc/logrotate.d/tomcat

示例(假设 Tomcat 安装在 /opt/tomcat/var/lib/tomcat9):

/opt/tomcat/logs/catalina.out {
    daily
    rotate 7
    missingok
    notifempty
    compress
    copytruncate
    dateext
}

参数说明

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

copytruncate 是关键,避免 Tomcat 继续写旧文件句柄

2️⃣ 测试配置

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

二、使用 Tomcat 自带 logging.properties(适合 localhost / manager 日志)

适用于:

  • localhost.*.log
  • manager.*.log
  • host-manager.*.log

示例配置

编辑:

/opt/tomcat/conf/logging.properties
1catalina.org.apache.juli.AsyncFileHandler.rotatable = true
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7

Tomcat 自带 JULI 日志系统支持按天轮转,但 不支持 catalina.out


三、使用 cronolog(传统方案,不推荐新系统)

1️⃣ 安装

sudo apt install cronolog

2️⃣ 修改 Tomcat 启动脚本

编辑 catalina.shsetenv.sh

CATALINA_OUT_CMD="|/usr/bin/cronolog /opt/tomcat/logs/catalina.%Y-%m-%d.out"

✅ 优点:按日期自动生成文件
❌ 缺点:维护成本高,已逐渐被 logrotate 取代


四、systemd 方式(Debian 10+)

如果 Tomcat 是通过 systemd 启动的:

sudo journalctl -u tomcat9 --since today

可配合:

sudo nano /etc/systemd/journald.conf
SystemMaxUse=200M

五、最佳实践建议 ✅

生产环境推荐组合

  • catalina.outlogrotate
  • localhost.*.loglogging.properties
  • 不推荐直接删除或手动 mv 日志

清理前确认

ls -lh /opt/tomcat/logs

六、常见问题

❓ 切割后 Tomcat 不写日志?

→ 没用 copytruncate
→ 或 Tomcat 被 systemd 重定向到 journal

❓ 日志过大怎么办?

du -sh /opt/tomcat/logs/*

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

  • Debian 版本
  • Tomcat 版本
  • Tomcat 安装路径
  • 是否使用 systemd

我可以给你一份 完全定制化的 logrotate 配置

0