以下是CentOS上Java日志清理的最佳实践:
使用logrotate工具
/etc/logrotate.d/java:/path/to/java/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 root root
}
执行 sudo systemctl reload logrotate 生效。编写Shell脚本+定时任务
#!/bin/bash
BACKUP_DIR="/backup/logs"
DATE=$(date +%Y%m%d)
cp /path/to/java/logs/*.log "$BACKUP_DIR/${DATE}.log"
> /path/to/java/logs/*.log
find "$BACKUP_DIR" -mtime +30 -name "*.log" -exec rm -f {} \;
通过 crontab -e 设置定时任务(如每天凌晨执行)。调整Java日志框架配置
log4j.xml/logback.xml 中设置滚动策略,例如按天分割日志并限制保留天数:<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
将日志级别调整为 WARN 或 ERROR 以减少冗余日志。监控与分析工具辅助
du/find 命令监控日志增长:find /path/to/logs -type f -size +100M -exec ls -lh {} \;(查找大于100MB的日志)。注意:清理前确保日志无合规性保留需求,生产环境建议先测试脚本避免误删。