CentOS中Java日志轮转主要有以下两种策略,具体配置方式如下:
log4j.properties或log4j2.xml中配置MaxFileSize(如10MB)和MaxBackupIndex(保留份数),达到指定大小后轮转并保留指定数量的旧日志。TimeBasedTriggeringPolicy或DatePattern(如%d{yyyy-MM-dd})实现按天/小时轮转,配合maxHistory设置保留天数。在logback.xml中通过TimeBasedRollingPolicy或SizeAndTimeBasedRollingPolicy配置,例如:
<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>
sudo yum install logrotate/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
}
sudo logrotate -d /etc/logrotate.d/java-appdaily(每天)、weekly(每周)、size(按文件大小)。rotate N(保留N份)、maxHistory(保留N天)。compress(压缩旧日志)、create(设置新日志权限)。优先使用日志框架(如Logback/Log4j2)实现,灵活性更高;系统级工具(logrotate)适合统一管理多服务日志。