温馨提示×

debian tomcat日志太大咋办

小樊
40
2026-09-13 07:16:20
栏目: 智能运维

在 Debian 上 Tomcat 日志太大,通常有以下几种常见原因和解决办法,你可以按实际情况选:


一、先搞清楚是哪个日志大

Tomcat 常见日志有:

  • catalina.out(最最容易暴涨)
  • catalina.log
  • localhost.log
  • host-manager.log
  • manager.log
  • access_log(访问日志)

先看看:

du -sh /var/log/tomcat*/ 2>/dev/null
ls -lh /var/log/tomcat*/

二、最推荐方案:用 logrotate(Debian 自带)

不要自己写脚本删,用 logrotate 最稳

1. 编辑或新建配置

sudo vim /etc/logrotate.d/tomcat

示例(适用于 Tomcat 9 / 10):

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

/var/log/tomcat*/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    copytruncate
    notifempty
}

copytruncate 很关键:不重启 Tomcat 也能切日志

2. 测试是否生效

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

三、catalina.out 特别大的处理

方案 1(推荐):禁止输出到 catalina.out

编辑:

sudo vim /etc/tomcat9/tomcat9.conf
# 或
sudo vim /opt/tomcat/bin/catalina.sh

找到:

CATALINA_OUT="$CATALINA_BASE/logs/catalina.out"

可改为:

CATALINA_OUT=/dev/null

⚠️ 注意:这样会丢失启动日志,不建议生产直接使用


方案 2:用 systemd 接管(推荐新系统)

如果你是用 systemctl start tomcat

sudo systemctl edit tomcat9

加入:

[Service]
StandardOutput=journal
StandardError=journal

然后:

sudo systemctl daemon-reload
sudo systemctl restart tomcat9

日志转由 journalctl 管理:

journalctl -u tomcat9

四、应用自身日志太大(log4j / logback)

如果是 你的 Java 项目 打的日志:

  • log4j.properties / logback.xml
  • 使用 按大小或按天滚动
  • 设置 maxHistory
  • INFO 而不是 DEBUG

五、access log 太大

编辑:

sudo vim /etc/tomcat9/server.xml

注释或限制:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b"
       maxDays="7" />

六、临时救急(不推荐长期使用)

sudo truncate -s 0 /var/log/tomcat*/catalina.out

总结(最省心方案 ✅)

Debian + Tomcat 标准做法

  • logrotate + copytruncate
  • 不要手动删 catalina.out
  • 应用日志交给 logback / log4j 自己滚

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

  • Debian 版本
  • Tomcat 版本
  • 日志路径
  • catalina.out 还是 access log

我可以给你精确配置

0