以下是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
。手动删除旧日志
find
命令删除指定目录下超过一定天数的日志(如30天):find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;
使用journalctl
管理systemd日志
journalctl --vacuum-time=1w
journalctl --vacuum-size=500M
。编写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
设置定时任务(如每天凌晨执行)。调整Java日志框架配置
log4j
/logback
配置中设置滚动策略,按时间或大小分割日志文件,避免堆积。log4j2.xml
):<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
启用日志压缩与归档
logrotate
或脚本中添加压缩选项(如compress
),节省磁盘空间。注意:操作前建议先备份重要日志,避免误删影响问题排查。