温馨提示×

tomcat日志轮转怎么配置

小樊
38
2026-10-18 06:59:03
栏目: 智能运维

在 Tomcat 中,**日志轮转(Log Rotation)**通常不是由 Tomcat 自身直接完成的,而是依赖底层日志框架(如 java.util.logging、log4j、logback)或操作系统工具(如 logrotate)。下面分几种常见方式说明。


一、使用 Tomcat 自带的 JULI(默认 java.util.logging)

Tomcat 默认使用 JULI(Java Util Logging Implementation)。

1. 配置文件位置

$TOMCAT_HOME/conf/logging.properties

2. 配置示例(按大小或按天轮转)

Tomcat 的 JULI 支持 AsyncFileHandler 和 FileHandler,但默认不支持按大小切割,通常是按天生成日志。

示例(按天):

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

rotatable=true 表示按天轮转(catalina.2026-01-15.log)

⚠️ JULI 不支持“超过 100MB 就切割”,需要换方案。


二、使用 logrotate(Linux 推荐 ✅)

这是生产环境最常用、最稳定的方式。

1. 创建 logrotate 配置

/etc/logrotate.d/tomcat

2. 示例配置

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

参数说明

  • daily:每天轮转
  • rotate 30:保留 30 份
  • compress:压缩旧日志
  • copytruncate:不重启 Tomcat 直接截断日志(关键)

✅ 适合 catalina.out


三、使用 Log4j / Logback(应用级日志)

如果你在 Web 应用中使用了 Log4j2 或 Logback:

Logback 示例(按大小+时间)

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxFileSize>100MB</maxFileSize>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
</appender>

✅ 支持:

  • 按天
  • 按大小
  • 自动压缩
  • 自动删除

四、Tomcat 访问日志(Access Log)轮转

Access Log 由 server.xml 控制:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b"
       rotatable="true"
       fileDateFormat="yyyy-MM-dd" />
  • rotatable=true ✅
  • fileDateFormat 控制粒度(天 / 小时)

五、推荐方案总结

场景 推荐方式
catalina.out logrotate + copytruncate
应用日志 Logback / Log4j2
access log Tomcat 自带 rotatable
简单按天 JULI

如果你能告诉我:

  • Tomcat 版本
  • 用的是 JULI / Log4j / Logback
  • 是否 Docker / K8s

我可以给你精确配置文件。

0 踩