温馨提示×

CentOS Java日志轮转策略是什么

小樊
60
2025-08-10 16:28:40
栏目: 编程语言

CentOS中Java日志轮转主要有以下两种策略,具体配置方式如下:

一、使用日志框架(推荐)

1. Log4j/Log4j2

  • 按大小轮转:在log4j.propertieslog4j2.xml中配置MaxFileSize(如10MB)和MaxBackupIndex(保留份数),达到指定大小后轮转并保留指定数量的旧日志。
  • 按时间轮转:通过TimeBasedTriggeringPolicyDatePattern(如%d{yyyy-MM-dd})实现按天/小时轮转,配合maxHistory设置保留天数。

2. Logback

logback.xml中通过TimeBasedRollingPolicySizeAndTimeBasedRollingPolicy配置,例如:

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory> <!-- 保留30天日志 -->
</rollingPolicy>

或按大小轮转:

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

二、使用系统工具(logrotate)

  1. 安装logrotate:sudo yum install logrotate
  2. 创建配置文件(如/etc/logrotate.d/java-app):
/var/log/java-app/*.log {
    daily       # 每天轮转
    rotate 7    # 保留7天日志
    compress    # 压缩旧日志
    missingok   # 文件不存在时不报错
    notifempty  # 空文件不轮转
    create 0640 root root
    postrotate
        # 可选:重启Java服务或发送信号通知重新打开日志
        # /bin/kill -USR1 $(cat /var/run/java-app.pid)
    endscript
}
  1. 测试配置:sudo logrotate -d /etc/logrotate.d/java-app

关键参数说明

  • 轮转频率daily(每天)、weekly(每周)、size(按文件大小)。
  • 保留策略rotate N(保留N份)、maxHistory(保留N天)。
  • 压缩与权限compress(压缩旧日志)、create(设置新日志权限)。

优先使用日志框架(如Logback/Log4j2)实现,灵活性更高;系统级工具(logrotate)适合统一管理多服务日志。

0