温馨提示×

ubuntu tomcat日志过大怎么处理

小樊
40
2026-10-06 13:08:44
栏目: 智能运维

在 Ubuntu 上,Tomcat 日志过大是常见问题,通常来自以下几个日志文件:

  • catalina.out(最常见、最容易爆)
  • catalina.log
  • localhost.log
  • host-manager.log
  • manager.log
  • access_log(访问日志)

下面按推荐程度给你几种处理方式。


一、最推荐:用 logrotate 自动切割(官方做法)

Ubuntu 自带 logrotate,非常适合 Tomcat。

1️⃣ 创建 logrotate 配置

sudo vi /etc/logrotate.d/tomcat

示例(假设你 Tomcat 在 /opt/tomcat,用户是 tomcat):

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

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

2️⃣ 测试是否生效

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

✅ 优点:

  • 不影响 Tomcat 运行
  • 自动压缩、自动清理
  • 官方推荐

二、禁止或限制 catalina.out(最常见问题)

catalina.out 是 stdout/stderr,不受 logging 配置控制。

方法 1:修改 bin/catalina.sh

找到:

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

改成:

CATALINA_OUT=/dev/null

⚠️ 会丢失部分错误日志,不推荐生产环境


方法 2(推荐):让应用别往 stdout 打日志

检查:

  • System.out.println()
  • log4j / logback 是否输出到 console

✅ 正确做法:

  • 应用日志 → log4j / logback
  • 不要打到 console

三、配置 Tomcat 自带日志(JULI)

编辑:

sudo vi /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.maxDays = 7

可限制保留天数。


四、Access Log(访问日志)过大

编辑:

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

找到:

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

可加:

maxDays="7"

或直接关闭(不推荐):

<!-- 注释掉 -->

五、手动清理(临时方案)

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

或:

echo > /opt/tomcat/logs/catalina.out

⚠️ 只是临时救急


六、推荐生产环境方案(总结)

✅ 最佳实践

  1. 用 logrotate
  2. 不用 catalina.out
  3. 应用日志用 logback/log4j2
  4. 限制 maxDays
  5. 定期监控磁盘

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

  • Tomcat 版本
  • 安装方式(apt / 手动)
  • 日志路径
  • 是否是生产环境

我可以直接帮你写一份 可用的 logrotate 配置。

0 踩