温馨提示×

ubuntu tomcat日志过大咋处理

小樊
39
2026-09-21 19:30:03
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志过大,通常有以下几种常见原因和对应处理方式,你可以按情况选择:


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

Tomcat 常见日志:

  • catalina.out(最容易暴涨)
  • catalina.yyyy-mm-dd.log
  • localhost.*.log
  • access_log(访问日志)

查看大小:

du -sh /var/log/tomcat9/*

(路径可能是 /var/log/tomcat9 或 /opt/tomcat/logs)


二、最常用方案:日志轮转(推荐)

1️⃣ 使用 logrotate(Ubuntu 自带)

Tomcat 一般已自带 logrotate 配置:

cat /etc/logrotate.d/tomcat9

如果没有,可新建:

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

示例:

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

解释:

  • copytruncate:不重启 Tomcat 直接截断日志(最重要)
  • compress:压缩旧日志
  • rotate 7:保留 7 天

手动测试:

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

三、catalina.out 特别大的处理

方案 A:直接禁用 catalina.out(最干净)

修改:

sudo vim /opt/tomcat/bin/catalina.sh

找到:

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

改成:

CATALINA_OUT=/dev/null

⚠️ 会丢失控制台输出,但日志仍在 catalina.*.log


方案 B:用 logging.properties 控制输出

编辑:

sudo vim /opt/tomcat/conf/logging.properties

减少级别:

.level = INFO

或关闭某些 handler。


四、访问日志 access_log 太大

编辑:

sudo vim /opt/tomcat/conf/server.xml

找到:

<Valve className="org.apache.catalina.valves.AccessLogValve" />

可:

  • 关闭:<!-- -->
  • 或加轮转参数

五、应用自身日志(log4j / slf4j)

如果是 Spring Boot / Java 项目:

  • 配置 logback.xml / log4j2.xml
  • 使用 RollingFileAppender

示例(logback):

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

六、临时清理(不推荐长期使用)

sudo truncate -s 0 /opt/tomcat/logs/catalina.out

✅ 推荐组合方案

生产环境最稳:

  1. logrotate + copytruncate
  2. catalina.out 控制输出
  3. 应用日志用滚动策略

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

  • Tomcat 版本
  • 日志路径
  • 是否是 Spring Boot 项目

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

0 踩