在CentOS上实现Golang日志轮转主要有以下两种策略:
logrotate定时轮转日志文件,支持按时间、文件大小等策略轮转,并可配置压缩、保留天数等参数。sudo yum install logrotate。/etc/logrotate.d/目录下新建文件(如golang),内容示例:/path/to/golang/logs/*.log {
daily # 每日轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志
missingok # 忽略不存在的日志文件
notifempty # 非空文件才轮转
create 0640 root adm # 新日志文件权限
}
```。
sudo logrotate -d /etc/logrotate.d/golang。lumberjack库实现日志轮转,支持按文件大小、数量、天数等参数自动轮转,无需依赖系统工具。go get github.com/natefinch/lumberjack。import "gopkg.in/natefinch/lumberjack.v2"
log.SetOutput(&lumberjack.Logger{
Filename: "/var/log/myapp.log",
MaxSize: 10, // 单个文件最大10MB
MaxBackups: 3, // 保留3个备份
MaxAge: 28, // 保留28天
Compress: true, // 压缩旧日志
})
```。
logrotate,适合需要统一管理多个服务日志的场景,配置简单且支持定时任务。lumberjack更适合需要精细化控制单个应用日志的场景,如动态调整轮转参数。