在CentOS中对Java日志进行归档管理,可采用以下方法:
使用logrotate工具
sudo yum install logrotate/etc/logrotate.d/java文件,添加如下内容(按需修改路径):/path/to/java/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 root root
postrotate
/bin/kill -USR1 `cat /path/to/java/logs/tomcat.pid` # 若为Tomcat服务,需重启服务
endscript
}
daily:按天轮转;rotate 7:保留7天日志;compress:压缩旧日志。sudo logrotate -d /etc/logrotate.d/java(测试),sudo systemctl reload logrotate(重新加载配置)。使用Java日志框架(如Log4j/Logback)
log4j.properties中添加RollingFileAppender,设置MaxFileSize和MaxBackupIndex控制日志滚动和保留数量。logback.xml中使用TimeBasedRollingPolicy,通过fileNamePattern定义日期格式归档,maxHistory设置保留天数。自定义Shell脚本+定时任务
#!/bin/bash
LOG_DIR="/path/to/java/logs"
ARCHIVE_DIR="/path/to/archive"
mkdir -p "$ARCHIVE_DIR"
for log in "$LOG_DIR"/*.log; do
gzip "$log" && mv "${log}.gz" "$ARCHIVE_DIR"
done
find "$ARCHIVE_DIR" -mtime +30 -type f -name "*.gz" -exec rm -f {} \; # 删除30天前日志
crontab -e添加0 0 * * * /path/to/script.sh,每日执行。其他工具
journalctl,可通过journalctl --since查询历史日志。注意:根据实际需求选择方案,简单场景优先使用logrotate或日志框架内置功能,复杂场景可结合脚本或专业工具。