温馨提示×

ubuntu tomcat日志如何分割

小樊
44
2026-09-06 16:30:00
栏目: 智能运维

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


一、使用 logrotate(推荐,系统级方案)

Ubuntu 自带 logrotate,适合分割 catalina.out

1. 创建 logrotate 配置

sudo vim /etc/logrotate.d/tomcat

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

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

参数说明

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

2. 测试配置

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

优点:简单、稳定、无需改 Tomcat 配置
缺点:不是“真正”的按时间命名日志


二、使用 cronolog(经典 Tomcat 方案)

1. 安装 cronolog

sudo apt update
sudo apt install cronolog

2. 修改 catalina.sh

找到:

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

改为:

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/bin/cronolog /opt/tomcat/logs/catalina.%Y-%m-%d.out &

重启 Tomcat 后,日志会变成:

catalina.2026-01-21.out
catalina.2026-01-22.out

优点:按日期命名,清晰
缺点:需改启动脚本


三、使用 log4j2 / logging.properties(应用级)

如果是 应用日志(不是 catalina.out):

示例(logging.properties)

handlers = 1catalina.org.apache.juli.FileHandler

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

或使用 log4j2

<RollingFile name="RollingFile"
             fileName="logs/app.log"
             filePattern="logs/app-%d{yyyy-MM-dd}.log">
    <PatternLayout pattern="%d %p %c{1.} %m%n"/>
    <TimeBasedTriggeringPolicy />
</RollingFile>

✅ 适合业务日志
❌ 不能分割 catalina.out


四、Tomcat 9+ 的 JULI(内置)

Tomcat 自带 AsyncFileHandler,可配置:

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

仍不自动按天分割,需配合 logrotate。


✅ 推荐组合

场景 推荐
只分割 catalina.out logrotate
想按日期命名 cronolog
业务日志 log4j2

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

  • Tomcat 版本
  • 安装方式(apt / 二进制)
  • 是否允许改启动脚本

我可以给你 精确配置

0