温馨提示×

ubuntu tomcat日志怎么轮转

小樊
36
2026-09-03 12:06:07
栏目: 智能运维

在 Ubuntu 上,Tomcat 日志轮转通常有两种方式:

  1. 使用 Linux 自带的 logrotate(推荐,系统级管理)
  2. 使用 Tomcat 自带的日志轮转(logging.properties + 按大小/日期)
  3. 使用 cronolog 等工具(较老方案)

下面重点讲最常用、最规范的 logrotate 方案


一、使用 logrotate 管理 Tomcat 日志(推荐)

1. 确认 Tomcat 日志位置

常见路径:

/var/log/tomcat9/
/var/log/tomcat/
/opt/tomcat/logs/

2. 创建 logrotate 配置文件

例如(以 tomcat9 为例):

sudo vim /etc/logrotate.d/tomcat

示例配置:

/var/log/tomcat9/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    copytruncate
}

参数说明

  • daily:每天轮转
  • rotate 14:保留 14 份
  • compress:压缩旧日志
  • delaycompress:延迟压缩(避免正在写)
  • copytruncate:复制后清空原文件(Tomcat 不断进程最安全
  • notifempty:空文件不轮转

⚠️ Tomcat 默认不会重新打开日志文件,必须用 copytruncate


3. 测试 logrotate

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

(只模拟,不真正执行)

真正执行:

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

4. 自动执行

Ubuntu 默认已启用:

/etc/cron.daily/logrotate

无需额外配置。


二、Tomcat 自带日志轮转(logging.properties)

Tomcat 使用 java.util.logging

vim /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.prefix = catalina.

⚠️ 默认不支持按大小或时间自动切割 通常需要配合 logrotate 使用。


三、Access Log 轮转(访问日志)

server.xml 中:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b"
       rotatable="true" />
  • rotatable="true":按天生成
  • 文件如:access_log.2026-01-21.txt

可再用 logrotate 压缩旧文件。


四、常见问题

Q:Tomcat 日志不轮转?

  • 没用 copytruncate
  • 路径写错
  • 权限不足

Q:日志一直变大?

  • 检查是否 catalina.out 未轮转
  • catalina.out 必须 logrotate

总结(最简方案)

/etc/logrotate.d/tomcat
  • copytruncate
  • 系统自动 daily 执行

如果你用的是 Tomcat 版本 / 安装方式(apt 或二进制),我可以给你精确配置。

0