在CentOS系统中,Golang应用程序的日志轮转可以通过配置logrus库或者使用系统级的logrotate工具来实现。下面分别介绍这两种方法:
安装logrus库: 如果你还没有安装logrus库,可以使用以下命令进行安装:
go get github.com/sirupsen/logrus
配置logrus进行日志轮转:
logrus本身不直接支持日志轮转,但你可以结合使用lumberjack库来实现。首先安装lumberjack库:
go get gopkg.in/natefinch/lumberjack.v2
然后在你的Golang代码中配置logrus使用lumberjack进行日志轮转:
package main
import (
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
log := logrus.New()
log.SetOutput(&lumberjack.Logger{
Filename: "/var/log/myapp.log",
MaxSize: 10, // 每个日志文件的最大大小(单位:MB)
MaxBackups: 3, // 保留的最大日志文件数量
MaxAge: 28, // 保留的最大日志文件天数
Compress: true, // 是否压缩旧的日志文件
})
log.Info("This is an info message")
}
创建日志文件:
确保你的Golang应用程序生成的日志文件路径是固定的,例如/var/log/myapp.log。
配置logrotate:
创建一个新的logrotate配置文件,例如/etc/logrotate.d/myapp,并添加以下内容:
/var/log/myapp.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root root
}
解释:
daily: 每天轮转一次日志文件。missingok: 如果日志文件不存在,不会报错。rotate 7: 保留7个轮转后的日志文件。compress: 压缩轮转后的日志文件。notifempty: 如果日志文件为空,不进行轮转。create 640 root root: 创建新的日志文件,权限为640,属主为root,属组为root。测试logrotate配置: 你可以手动测试logrotate配置是否生效:
logrotate -f /etc/logrotate.d/myapp
这将强制logrotate立即应用配置并轮转日志文件。
通过以上两种方法,你可以在CentOS系统中实现Golang应用程序的日志轮转。选择哪种方法取决于你的具体需求和偏好。