温馨提示×

如何分割Ubuntu Tomcat日志

小樊
35
2026-07-21 21:57:47
栏目: 智能运维

在 Ubuntu 上分割(切割、轮转)Tomcat 日志,常见有三种方式:使用 logrotate(推荐)使用 Tomcat 自带日志机制手动或脚本切割。下面按常用程度详细说明。


一、使用 logrotate(最推荐 ✅)

Ubuntu 自带 logrotate,非常适合按天/大小切割 Tomcat 日志。

1️⃣ 创建 logrotate 配置文件

sudo vim /etc/logrotate.d/tomcat

2️⃣ 示例配置(按天切割)

假设 Tomcat 安装在:

/opt/tomcat
/opt/tomcat/logs/catalina.out {
    daily
    rotate 30
    missingok
    notifempty
    compress
    copytruncate
    dateext
    dateformat -%Y%m%d
}

3️⃣ 参数说明

参数 作用
daily 每天切割
rotate 30 保留 30 个备份
missingok 日志不存在不报错
notifempty 空文件不切割
compress 压缩旧日志
copytruncate 复制后清空原文件(Tomcat 不重启)
dateext 使用日期作为后缀

4️⃣ 测试配置

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

强制立即执行:

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

二、使用 Tomcat 自带 logging.properties(适合 catalina.*)

Tomcat 支持按天生成日志文件。

1️⃣ 编辑 logging.properties

vim /opt/tomcat/conf/logging.properties

2️⃣ 修改或添加

1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.suffix = .log
1catalina.org.apache.juli.AsyncFileHandler.rotatable = true

✅ Tomcat 会自动生成:

catalina.2026-01-21.log

⚠️ 注意:

  • 不能切割 catalina.out
  • 需要重启 Tomcat

三、使用 cron + 脚本(不推荐,复杂)

适合特殊需求,不推荐新手使用。

示例脚本

#!/bin/bash
LOG=/opt/tomcat/logs/catalina.out
DATE=$(date +%Y%m%d)

cp $LOG $LOG.$DATE
echo "" > $LOG
chmod +x /opt/cut_tomcat_log.sh

加入 crontab:

0 0 * * * /opt/cut_tomcat_log.sh

⚠️ 风险:可能丢日志、需重启或 reload


四、推荐方案总结 ✅

场景 推荐方式
切割 catalina.out ✅ logrotate
切割 catalina.xxx.log Tomcat logging.properties
生产环境 ✅ logrotate
不想重启 Tomcat ✅ logrotate (copytruncate)

五、常见问题

❓ 切割后 Tomcat 不写日志?

✅ 使用 copytruncate 可避免

❓ catalina.out 越来越大?

✅ 一定要用 logrotate

❓ 是否要重启 Tomcat?

❌ logrotate 不需要


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

  • Tomcat 版本
  • 日志路径
  • 是否 Docker / systemd

我可以帮你定制一份完全可用的 logrotate 配置

0