温馨提示×

怎样轮转linux tomcat日志

小樊
54
2026-10-17 06:38:25
栏目: 智能运维

在 Linux 上轮转(rotate)Tomcat 日志,常见做法有 logrotate 和 Tomcat 自带日志轮转 两种,下面按“最推荐 → 可选”的方式说明。


一、使用 logrotate(最推荐 ✅)

Tomcat 默认日志(catalina.out、localhost.log 等)不会自动切割,用 logrotate 是最标准的方式。

1. 创建 logrotate 配置文件

sudo vi /etc/logrotate.d/tomcat

示例配置(假设 Tomcat 安装在 /opt/tomcat,日志在 /opt/tomcat/logs):

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

/opt/tomcat/logs/*.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    copytruncate
}

2. 参数说明

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

3. 测试配置

sudo logrotate -d /etc/logrotate.d/tomcat  # 模拟
sudo logrotate -f /etc/logrotate.d/tomcat  # 强制执行

二、Tomcat 自带日志轮转(JULI)

Tomcat 使用 java.util.logging,可通过配置实现按天轮转。

1. 修改

$TOMCAT_HOME/conf/logging.properties

示例:

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

⚠️ 默认 不会自动切割 catalina.out,只影响 catalina.YYYY-MM-DD.log


三、使用 cronolog(老方案,不推荐)

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

配合:

catalina.sh | cronolog ...

❌ 已逐渐被 logrotate 取代


四、常见注意事项 ⚠️

  1. 不要直接删除 catalina.out
  2. 使用 copytruncate 避免 Tomcat 写文件失败
  3. 确保 logrotate 有 cron 任务(默认有)
  4. 如果是 systemd 启动 Tomcat,日志也可能在 journalctl

五、推荐方案总结

方案 是否推荐 说明
logrotate + copytruncate ✅✅✅ 最稳定
Tomcat logging.properties ✅ 仅限 .log
cronolog ❌ 老旧

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

  • Tomcat 安装路径
  • 是否用 systemd
  • 想按天 / 按大小轮转

我可以帮你写一份可直接用的配置。

0 踩