温馨提示×

debian tomcat日志切割如何做

小樊
47
2026-09-22 12:54:41
栏目: 智能运维

在 Debian 上做 Tomcat 日志切割,常见有几种方案,从“最简单”到“最规范”给你列一下,你可以按需求选。


一、最推荐:使用 logrotate(系统级,零代码)

Debian 自带 logrotate,非常适合 Tomcat。

1. 示例配置

新建文件:

/etc/logrotate.d/tomcat

内容示例(假设 Tomcat 在 /opt/tomcat,日志在 logs/):

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

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

2. 说明

  • copytruncate:关键,Tomcat 不会重新打开日志文件,直接截断最安全
  • compress:自动 gzip
  • rotate 14:保留 14 天

3. 测试

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

✅ 生产环境最常用方案


二、Tomcat 自带 Logging(JULI)

Tomcat 默认用 java.util.logging。

修改:

/opt/tomcat/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.

但 JULI 原生不支持按大小/时间自动切割(除非写 Handler)。

❌ 不推荐用于 catalina.out


三、使用 Log4j / Logback(应用级)

如果你控制 Web 应用代码:

Logback 示例

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>/opt/tomcat/logs/app.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>/opt/tomcat/logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>14</maxHistory>
  </rollingPolicy>
</appender>

✅ 适合 业务日志 ❌ 不影响 catalina.out


四、使用 cronolog(老方案)

apt install cronolog

修改 catalina.sh:

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

并用:

| cronolog $CATALINA_OUT &

⚠️ 已逐渐淘汰


五、总结建议

场景 推荐方案
catalina.out ✅ logrotate
业务日志 Logback / Log4j2
简单系统 logrotate
老系统 cronolog(不推荐)

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

  • Tomcat 安装路径
  • 是否是 systemd 启动
  • 是否只切 catalina.out

我可以直接给你一份 可复制的配置文件。

0 踩