温馨提示×

debian如何切割tomcat日志

小樊
41
2026-09-07 08:53:33
栏目: 智能运维

在 Debian 上“切割 Tomcat 日志”通常有两种常见场景:

  1. Tomcat 自带日志(catalina.out 等)
  2. 应用自身日志(log4j / logback 等)

下面按最常用、最稳妥的方式讲。


一、使用 logrotate 切割 Tomcat 日志(推荐)

Debian 自带 logrotate,非常适合切割 catalina.out

1. 创建 logrotate 配置文件

sudo vi /etc/logrotate.d/tomcat

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

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

参数说明

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

2. 测试配置

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

没报错后再强制执行一次:

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

这是生产环境最推荐方式


二、Tomcat 自带 logging.properties(不常用)

Tomcat 自带的 java.util.logging 不能自动切割 catalina.out
只能控制:

  • catalina.log
  • localhost.log

示例(conf/logging.properties):

1catalina.org.apache.juli.FileHandler.rotatable = true
1catalina.org.apache.juli.FileHandler.bufferSize = 1024

⚠️ 对 catalina.out 无效


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

安装

sudo apt install cronolog

修改 startup.sh

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

并改为:

| /usr/bin/cronolog "$CATALINA_OUT" &

⚠️ 需要改启动脚本,维护成本高


四、应用日志(log4j / logback)

如果你用的是:

  • log4j2
  • logback

直接配置 按大小 / 按天滚动,不需要 logrotate。

logback 示例

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

五、总结建议

场景 推荐方案
catalina.out ✅ logrotate + copytruncate
应用日志 ✅ log4j / logback
老系统 cronolog(不推荐)

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

  • Tomcat 版本
  • 安装路径
  • 是否 Docker

我可以给你完全贴合你环境的配置

0