You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring服务器如何配置实现catalina.log达到指定大小后自动转存备份

Tomcat catalina.log 日志复制与滚动管理方案

问题1:catalina.log 日志复制到其他文件的实现方式

可以实现catalina.log日志同步输出到其他自定义文件,根据Spring服务的部署方式分两种场景配置:

场景1:Spring服务使用外置独立Tomcat部署

修改Tomcat根目录下conf/logging.properties配置即可:

  • 新增自定义文件处理器,比如需要同时输出到custom-app.log,添加如下配置:
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler, 2custom.org.apache.juli.FileHandler
# 自定义日志文件基础配置
2custom.org.apache.juli.FileHandler.level = FINE
2custom.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2custom.org.apache.juli.FileHandler.prefix = custom-app.
2custom.org.apache.juli.FileHandler.suffix = .log
# 配置catalina日志同时输出到默认处理器和自定义处理器
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 1catalina.org.apache.juli.FileHandler, 2custom.org.apache.juli.FileHandler

场景2:Spring Boot使用内嵌Tomcat部署

Spring Boot默认使用logback作为日志实现,直接修改resources/logback-spring.xml配置,添加catalina日志的多目标输出规则即可,示例配置片段:

<!-- 捕获内嵌Tomcat的catalina日志输出 -->
<logger name="org.apache.catalina" level="INFO" additivity="false">
    <appender-ref ref="CATALINA_FILE"/>
    <appender-ref ref="CUSTOM_CATALINA_FILE"/>
</logger>
<!-- 输出到原catalina.log的appender -->
<appender name="CATALINA_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/catalina.log</file>
</appender>
<!-- 输出到自定义复制文件的appender -->
<appender name="CUSTOM_CATALINA_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/catalina-copy.log</file>
</appender>

问题2:按大小阈值的catalina.log滚动转存解决方案

无需额外安装工具,直接通过原生配置即可实现,主流有两种适配方案:

方案1:日志框架自带滚动策略(Spring服务推荐使用)

如果是Spring Boot内嵌Tomcat场景,通过logback配置即可实现指定大小(比如2GB)自动转存,修改logback-spring.xml的对应appender配置:

<appender name="CATALINA_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/catalina.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- 转存归档文件的命名规则,支持按日期+序号区分 -->
        <fileNamePattern>${LOG_PATH}/archived/catalina.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
        <!-- 单文件最大阈值,可根据需求调整为1GB/3GB等 -->
        <maxFileSize>2GB</maxFileSize>
        <!-- 所有归档日志总大小上限,避免占满磁盘 -->
        <totalSizeCap>50GB</totalSizeCap>
        <!-- 归档日志最长保留天数 -->
        <maxHistory>30</maxHistory>
        <!-- 服务启动时自动清理超出保留规则的日志 -->
        <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>

配置生效后,catalina.log达到设定阈值时会自动压缩转存到archived目录下,原catalina.log清空后继续写入新日志。

方案2:外置Tomcat使用自带JULI日志滚动配置

修改conf/logging.properties中的catalina日志处理器配置:

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
# 单文件最大大小,单位为字节,2GB对应2147483648
1catalina.org.apache.juli.FileHandler.maxFileSize = 2147483648
# 归档日志最长保留天数
1catalina.org.apache.juli.FileHandler.maxDays = 30

注意事项

  • 不要手动修改正在写入的catalina.log文件,避免日志写入中断
  • 生产环境建议开启归档日志压缩,可节省80%以上的磁盘占用
  • 若需自定义转存路径,直接修改配置中的directory或fileNamePattern参数即可

内容的提问来源于stack exchange,提问作者Mahaveer Saini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:48:04