以下是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的日志)。注意:清理前确保日志无合规性保留需求,生产环境建议先测试脚本避免误删。