温馨提示×

debian tomcat日志怎样轮转

小樊
38
2026-09-04 10:25:29
栏目: 智能运维

在 Debian 上,Tomcat 日志轮转通常有两种常见做法:

  1. 使用 logrotate(推荐,系统级管理)
  2. 使用 Tomcat 自带的 logging 配置(如 rotatesize / rotation)

下面分别说明。


一、使用 logrotate(最常用、最规范)

Debian 默认带有 logrotate,Tomcat 安装后一般会在:

/etc/logrotate.d/tomcat9   (或 tomcat8 / tomcat10,视版本而定)

1. 查看已有配置

cat /etc/logrotate.d/tomcat9

典型内容类似:

/var/log/tomcat9/catalina.out {
    weekly
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

2. 关键参数说明

  • weekly / daily:轮转周期
  • rotate 4:保留 4 个旧日志
  • compress:压缩旧日志
  • copytruncate:复制后清空原文件(Tomcat 必须用它,因为 Tomcat 不会重新打开日志文件)
  • notifempty:空文件不轮转

3. 手动测试轮转

logrotate -d /etc/logrotate.d/tomcat9   # 测试(不真正执行)
logrotate -f /etc/logrotate.d/tomcat9   # 强制执行

二、Tomcat 自身日志轮转(catalina.out 不支持)

⚠️ 注意:
catalina.out 不支持 Tomcat 自带的 rotation
只有 localhost.logmanager.log 等可以使用 logging.properties

示例(不常用)

1catalina.org.apache.juli.AsyncFileHandler.rotatable = true
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 30

三、推荐方案(实战建议)

生产环境推荐

  • catalina.outlogrotate + copytruncate
  • 应用日志 → log4j2 / logback 自带滚动

不要做的事

  • 不要直接 rm catalina.out
  • 不要指望 Tomcat 自动切 catalina.out

四、示例:自定义 logrotate(Tomcat 10)

/var/log/tomcat10/*.log
/var/log/tomcat10/catalina.out {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

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

  • Tomcat 版本(8 / 9 / 10)
  • 日志路径
  • 是否 Docker / systemd

我可以给你一份可直接用的配置

0