CentOS 环境下 Golang 日志轮转策略
策略总览
方式一 使用 logrotate 的系统级策略
/path/to/your/golang/app/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
sharedscripts
postrotate
/path/to/your/golang/app/restart.sh
endscript
}
关键指令含义:
sudo logrotate -d /etc/logrotate.d/golang(调试模式,不真正执行)。sudo logrotate -f /etc/logrotate.d/golang。方式二 应用内置轮转 lumberjack
import (
"log"
"gopkg.in/natefinch/lumberjack.v2"
)
log.SetOutput(&lumberjack.Logger{
Filename: "/path/to/your/golang/app/logs/myapp.log",
MaxSize: 10, // 单个文件最大 10 MB
MaxBackups: 7, // 最多保留 7 个备份
MaxAge: 30, // 备份最长保留 30 天
Compress: true, // 启用压缩
})
特点:按大小触发切割、自动命名与清理,部署简单;需引入第三方依赖并权衡运行时开销。方式三 结合 syslog 或第三方日志库
如何选择与落地建议