以下是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
),節省磁盤空間。注意:操作前建議先備份重要日志,避免誤刪影響問題排查。