在CentOS上配置Golang应用程序的日志轮转,通常可以通过以下几种方法实现:
安装rsyslog:
sudo yum install rsyslog
配置rsyslog:
编辑/etc/rsyslog.conf或创建一个新的配置文件(例如/etc/rsyslog.d/50-default.conf),添加以下内容:
if $programname == 'your_go_app' then /var/log/your_go_app.log
& stop
这将把你的Go应用程序的日志重定向到/var/log/your_go_app.log。
重启rsyslog服务:
sudo systemctl restart rsyslog
配置日志轮转:
编辑/etc/logrotate.d/rsyslog,确保包含以下内容:
/var/log/your_go_app.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}
这将每天轮转日志,并保留最近7天的日志文件。
创建日志文件:
确保你的Go应用程序将日志写入一个特定的文件,例如/var/log/your_go_app.log。
配置logrotate:
创建一个新的logrotate配置文件,例如/etc/logrotate.d/your_go_app,并添加以下内容:
/var/log/your_go_app.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}
这将每天轮转日志,并保留最近7天的日志文件。
测试logrotate配置:
sudo logrotate -f /etc/logrotate.d/your_go_app
如果你希望在Go应用程序内部处理日志轮转,可以使用logrus和lumberjack库。
安装依赖:
go get github.com/sirupsen/logrus
go get gopkg.in/natefinch/lumberjack.v2
配置logrus使用lumberjack: 在你的Go应用程序中,配置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/your_go_app.log",
MaxSize: 10, // megabytes
MaxBackups: 3,
MaxAge: 28, //days
Compress: true, // disabled by default
})
log.Info("This is an info message")
}
运行你的Go应用程序:
go run main.go
通过以上方法,你可以在CentOS上配置Golang应用程序的日志轮转,确保日志文件不会无限增长,并且可以方便地进行管理和归档。