温馨提示×

ubuntu tomcat日志过大怎么破

小樊
38
2026-09-18 16:38:52
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志过大,一般有 几种常见原因和对应解决办法。下面按「从快到彻底」给你一套实战方案。


一、先确认是哪些日志在涨

Tomcat 常见日志有:

/var/log/tomcat9/
├── catalina.out      # 最容易爆炸
├── catalina.YYYY-MM-DD.log
├── localhost.log
├── host-manager.log
└── manager.log

重点对象:catalina.out


二、最推荐方案:用 logrotate(官方友好)

1️⃣ 安装 logrotate(一般自带)

which logrotate

2️⃣ 新建配置

sudo vim /etc/logrotate.d/tomcat

示例(Tomcat 9):

/var/log/tomcat9/catalina.out {
    daily
    rotate 7
    missingok
    notifempty
    compress
    copytruncate
}

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

3️⃣ 手动测试

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

三、Tomcat 自带 Logging 控制(JULI)

修改 logging 级别

sudo vim /var/lib/tomcat9/conf/logging.properties

示例:

.level = INFO
org.apache.catalina.level = WARNING

⚠️ 不建议用 FINE / FINEST,日志会爆炸


四、彻底方案:用 log4j / logback 替换 catalina.out

如果你是自己项目:

  • logbacklog4j2
  • 配置:
    • 按大小滚动
    • 按天滚动
    • 自动删除旧日志

示例(logback):

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

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

# 清空 catalina.out(不删文件)
sudo truncate -s 0 /var/log/tomcat9/catalina.out

sudo echo > /var/log/tomcat9/catalina.out

⚠️ 只是临时止血


六、防止“疯狂打印日志”的根本方法

  • ✅ 检查应用是否有:
    • 死循环 log
    • 异常被 catch 后还一直打
  • ✅ 生产环境关闭 System.out.println
  • ✅ 使用异步日志

七、总结推荐组合 ✅

最稳方案:

logrotate + INFO 日志级别 + 应用自身日志框架

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

  • Tomcat 版本(8 / 9 / 10)
  • 是系统自带还是手动安装
  • 日志主要来源(Tomcat 还是你的 Java 项目)

我可以给你精确到文件的配置

0