首页主机资讯如何设置Tomcat日志轮转周期

如何设置Tomcat日志轮转周期

时间2025-11-22 02:15:03发布访客分类主机资讯浏览1258
导读:Tomcat日志轮转周期设置指南 一、Linux系统级方案 logrotate(推荐) 适用对象:控制 catalina.out 等标准输出日志,系统级统一维护,稳定可靠。 配置步骤 创建配置文件:在 /etc/logrotate.d/...

Tomcat日志轮转周期设置指南

一、Linux系统级方案 logrotate(推荐)

  • 适用对象:控制 catalina.out 等标准输出日志,系统级统一维护,稳定可靠。
  • 配置步骤
    1. 创建配置文件:在 /etc/logrotate.d/ 下新建文件,例如 tomcat
    2. 写入规则(示例为按天轮转,保留7天):
      /opt/tomcat/logs/catalina.out {
      
          daily
          rotate 7
          compress
          missingok
          notifempty
          copytruncate
          create 640 tomcat tomcat
      }
      
      
      关键参数说明:
      • daily/weekly/monthly:设置轮转周期(天/周/月)。
      • rotate N:保留最近 N 个归档。
      • compress:归档后压缩(常用 gzip)。
      • missingok:日志不存在时不报错。
      • notifempty:日志为空时不轮转。
      • copytruncate:复制后截断原文件,避免重启应用;若使用外部日志框架,可改用 create 重建文件。
      • create 640 tomcat tomcat:新建日志文件权限与属主属组。
    3. 调试与生效
      • 调试:执行 sudo logrotate -d /etc/logrotate.d/tomcat(仅校验,不真正轮转)。
      • 强制执行一次:执行 sudo logrotate -f /etc/logrotate.d/tomcat
    4. 执行频率
      • logrotate 通常由系统的 cron 每日任务触发(如 /etc/cron.daily/logrotate),无需额外配置即可按日运行。

二、按大小轮转与清理脚本

  • 若希望按大小触发,可结合 size 指令与脚本清理:
    /opt/tomcat/logs/catalina.out {
    
        size 100M
        rotate 7
        compress
        missingok
        notifempty
        copytruncate
    }
        
    
  • 也可编写清理脚本定期删除旧日志(示例保留 7 天):
    #!/usr/bin/env bash
    LOG_DIR="/opt/tomcat/logs"
    KEEP_DAYS=7
    find "$LOG_DIR" -type f -name "*.out" -mtime +$KEEP_DAYS -delete
    
    通过 crontab 每天 02:00 执行:
    0 2 * * * /path/to/clean_tomcat_logs.sh
    
  • 说明:按大小轮转适合高流量场景;脚本清理便于跨目录、多实例统一治理。

三、应用内日志框架按日期滚动(Tomcat 10 与 Log4j 2 示例)

  • 适用对象:使用 Log4j 2 的应用日志,可精确按天/小时滚动并控制保留份数。
  • 示例配置(按天滚动,保留 30 天):
    <
        ?xml version="1.0" encoding="UTF-8"?>
        
    <
        Configuration status="WARN">
        
        <
        Appenders>
        
            <
    RollingFile name="RollingFile"
                         fileName="logs/app.log"
                         filePattern="logs/app-%d{
    yyyy-MM-dd}
        .log.gz">
        
                <
    PatternLayout pattern="%d{
    yyyy-MM-dd HH:mm:ss.SSS}
     [%t] %-5level %logger{
    36}
         - %msg%n"/>
        
                <
        Policies>
        
                    <
        TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        
                <
        /Policies>
        
                <
        DefaultRolloverStrategy max="30"/>
        
            <
        /RollingFile>
        
        <
        /Appenders>
        
        <
        Loggers>
        
            <
        Root level="info">
        
                <
        AppenderRef ref="RollingFile"/>
        
            <
        /Root>
        
        <
        /Loggers>
        
    <
        /Configuration>
        
    
    要点:
    • TimeBasedTriggeringPolicy interval=“1” 表示按天滚动;modulate=“true” 使滚动边界对齐到自然时间边界。
    • DefaultRolloverStrategy max=“30” 控制最多保留 30 个归档。

四、常见问题与注意事项

  • 选择策略
    • 仅管控 catalina.out:优先用 logrotate(系统级、低侵入)。
    • 应用日志需按天/小时滚动:在应用内用 Log4j 2 RollingFileAppender 配置。
  • 避免日志丢失
    • 使用 copytruncate 可避免重启 Tomcat;若改用 create,需在 postrotate 中通知应用重新打开日志文件(如使用 kill -HUP 或应用支持的重新打开机制)。
  • 权限与路径
    • 确保 create 指定的用户/组对日志目录有写权限;路径需与实际安装一致(如 /opt/tomcat/logs/catalina.out/var/log/tomcat/)。
  • 验证与观测
    • 先用 logrotate -d 校验,再用 -f 强制执行一次;观察归档文件是否按预期生成与压缩。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何设置Tomcat日志轮转周期
本文地址: https://pptw.com/jishu/754005.html
Debian中phpstorm版本如何选择 Tomcat日志中异常堆栈信息解读

游客 回复需填写必要信息