温馨提示×

Debian Tomcat日志怎么分割

小樊
34
2026-07-27 18:13:09
栏目: 智能运维

在 Debian 上,Tomcat 日志分割常见有几种做法,从“官方推荐”到“实战常用”依次说明。你可以按场景选择。


一、Tomcat 自带方式(推荐首选 ✅)

Tomcat 8+ 默认使用 java.util.logging + systemd,日志由 journald 管理,而不是 catalina.out。

1️⃣ 查看 Tomcat 是否由 systemd 管理

systemctl status tomcat9

如果看到:

Main PID: xxx (java)

说明是 systemd 启动的。

2️⃣ 日志默认位置

journalctl -u tomcat9

查看实时日志:

journalctl -u tomcat9 -f

优点

  • 自动轮转
  • 不需要额外配置
  • Debian 官方推荐

缺点

  • 不是传统文本日志
  • 不适合习惯 catalina.out 的用户

二、使用 logrotate 切割 catalina.out(最常用 ✅✅)

如果你仍然生成 catalina.out,这是最经典方案。

1️⃣ 安装 logrotate(一般已安装)

apt install logrotate

2️⃣ 新建 logrotate 配置文件

vim /etc/logrotate.d/tomcat

示例(适合 Tomcat 9):

/var/log/tomcat9/catalina.out {
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
    dateext
    dateformat -%Y%m%d
}

3️⃣ 参数说明

参数 作用
daily 每天切割
rotate 7 保留 7 天
compress 压缩旧日志
copytruncate 不重启 Tomcat
dateext 日期后缀

4️⃣ 测试

logrotate -d /etc/logrotate.d/tomcat

优点

  • 最成熟
  • 不依赖 Tomcat 版本
  • 运维最熟悉

三、使用 cronolog(老项目常见)

1️⃣ 安装 cronolog

apt install cronolog

2️⃣ 修改 Tomcat 启动脚本

编辑:

vim /usr/share/tomcat9/bin/catalina.sh

找到:

>> "$CATALINA_OUT" 2>&1 &

改为:

2>&1 | /usr/bin/cronolog /var/log/tomcat9/catalina.%Y%m%d.out &

3️⃣ 重启 Tomcat

systemctl restart tomcat9

✅ 日志示例:

catalina.20260121.out

不推荐新项目使用


四、使用 log4j / logback(大型项目 ✅)

适合 应用日志,不是 Tomcat 本身日志。

示例(logback)

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

✅ 精细控制
❌ 需要改代码/配置


五、推荐方案总结 ✅

场景 推荐方案
Debian + Tomcat 9+ systemd journal
有 catalina.out logrotate(最常用)
老系统 cronolog
应用日志 log4j / logback

六、常见坑 ⚠

  1. 不要同时用 logrotate + cronolog
  2. copytruncatepostrotate 必须二选一
  3. 确保 Tomcat 用户对日志目录可写
chown -R tomcat:tomcat /var/log/tomcat9

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

  • Tomcat 版本
  • 是否使用 systemd
  • 是否一定要 catalina.out

我可以给你完全贴合你系统的配置

0