linux

Tomcat日志轮转策略应该如何设置

小樊
50
2025-10-02 13:55:22
栏目: 智能运维

一、通过Tomcat原生配置(logging.properties)设置日志轮转
Tomcat默认使用java.util.logging(JULI)框架管理日志,可通过修改conf/logging.properties文件配置轮转策略,适用于需要集成Tomcat原生日志体系的场景。
关键配置步骤及参数说明

  1. 定位配置文件:找到Tomcat安装目录下conf文件夹中的logging.properties文件(如/opt/tomcat/conf/logging.properties)。
  2. 备份原始文件:修改前建议复制一份原始文件(如logging.properties.bak),便于后续恢复。
  3. 修改文件处理器配置:找到或添加java.util.logging.FileHandler相关配置项,核心参数如下:
    • pattern:日志文件命名模式,${catalina.base}表示Tomcat安装目录(如${catalina.base}/logs/catalina.%g.log,生成的文件名为catalina.1.logcatalina.2.log等);
    • limit:单个日志文件的最大大小(单位:字节,如50000表示50KB,10485760表示10MB);
    • count:保留的旧日志文件数量(如10表示保留10个历史文件);
    • formatter:日志格式化器(推荐使用java.util.logging.SimpleFormatter,格式为yyyy-MM-dd HH:mm:ss)。
      示例配置:
    java.util.logging.FileHandler.level = INFO
    java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.log
    java.util.logging.FileHandler.limit = 10485760  # 10MB
    java.util.logging.FileHandler.count = 10
    java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
    
  4. 应用配置:保存文件后,重启Tomcat服务器(./bin/shutdown.sh && ./bin/startup.sh)使配置生效。
  5. 验证效果:检查logs目录下的日志文件,确认是否按指定大小(如10MB)分割,并保留指定数量(如10个)的历史文件。

二、通过Linux系统工具(logrotate)设置日志轮转
若服务器为Linux环境,可使用logrotate工具(系统自带)实现更灵活的日志轮转(如按天、压缩、延迟压缩等),适用于多Tomcat实例或需要系统级管理的场景。
关键配置步骤及参数说明

  1. 创建logrotate配置文件:在/etc/logrotate.d/目录下新建tomcat文件(如sudo touch /etc/logrotate.d/tomcat)。
  2. 编写配置内容:针对Tomcat的主要日志文件(如catalina.out)添加以下配置(以/usr/local/tomcat/logs/catalina.out为例):
    /usr/local/tomcat/logs/catalina.out {
        daily                   # 每天轮转一次(可选:weekly/monthly)
        rotate 7                # 保留最近7份历史日志
        compress                # 压缩旧日志(如catalina.out.1.gz)
        delaycompress           # 延迟压缩(当前轮转的日志在下一次轮转时才压缩)
        missingok               # 日志文件不存在时不报错
        notifempty              # 日志为空时不轮转
        copytruncate            # 复制原日志后清空,避免重启Tomcat(适用于无法修改Tomcat配置的场景)
    }
    
  3. 测试配置有效性
    • 调试模式(查看配置错误):sudo logrotate -d /etc/logrotate.d/tomcat
    • 强制立即执行:sudo logrotate -f /etc/logrotate.d/tomcat
  4. 设置自动执行logrotate默认通过系统cron任务(/etc/cron.daily/logrotate)每天自动运行,无需额外配置。

三、两种方式的对比与选择

维度 logging.properties(JULI) logrotate(系统工具)
适用场景 需集成Tomcat原生日志体系、简单轮转需求 Linux环境、复杂轮转需求(如按天、压缩)
配置复杂度 较简单,仅需修改Tomcat配置文件 稍复杂,需熟悉logrotate语法
灵活性 依赖JULI框架,功能有限(如不支持按天轮转) 更灵活,支持多种轮转策略(如按时间、大小)
是否需要重启 需重启Tomcat 无需重启Tomcat(copytruncate方式)

注意事项

0
看了该问题的人还看了