温馨提示×

ubuntu tomcat日志分割如何做

小樊
41
2026-10-18 06:53:01
栏目: 智能运维

在 Ubuntu 上,Tomcat 默认日志(如 catalina.out)不会自动分割,时间久了会非常大。常见做法有以下几种,从简单到专业给你说明。


一、最简单:使用 logrotate(推荐)

Ubuntu 自带 logrotate,非常适合 Tomcat。

1. 创建 logrotate 配置

sudo vi /etc/logrotate.d/tomcat

示例配置(假设 Tomcat 安装在 /opt/tomcat):

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

参数说明

  • daily:每天分割
  • rotate 14:保留 14 天
  • compress:压缩旧日志
  • copytruncate:复制后清空原文件(Tomcat 不重启)

2. 测试配置

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

3. 手动执行一次

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

✅ 优点:简单、稳定、无需改 Tomcat
❌ 缺点:不是实时分割


二、使用 cronolog(Tomcat 官方常见方案)

1. 安装

sudo apt update
sudo apt install cronolog

2. 修改 Tomcat 启动脚本

编辑:

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

找到:

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

改为:

CATALINA_OUT="/opt/tomcat/logs/catalina.%Y-%m-%d.out"

并修改启动命令(大约 400 行附近):

org.apache.catalina.startup.Bootstrap "$@" start \
  >> "$CATALINA_OUT" 2>&1 &

改为:

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
  | /usr/bin/cronolog "$CATALINA_OUT" &

重启 Tomcat 后日志会按天生成。

✅ 优点:按时间自动分割
❌ 缺点:需改启动脚本


三、使用 log4j / logging.properties(仅应用日志)

如果你只是想分割 应用日志,而不管 catalina.out:

修改:

/opt/tomcat/conf/logging.properties

示例:

1catalina.org.apache.juli.FileHandler.rotatable = true
1catalina.org.apache.juli.FileHandler.bufferSize = 8192

或使用 log4j2 + RollingFileAppender(更灵活)。


四、生产环境推荐方案 ✅

场景 推荐
一般服务器 logrotate
日志量大 cronolog
微服务/容器 log4j2 + 外部采集(ELK)

五、常见坑提醒

  1. 不要直接删 catalina.out
  2. copytruncate 不会丢日志,但瞬间可能丢几 KB
  3. systemd 管理 Tomcat 时,注意输出重定向

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

  • Tomcat 版本
  • 是否用 systemd
  • 日志大小 / 分割频率需求

我可以帮你写完整可用配置。

0 踩