温馨提示×

如何在CentOS上配置Golang日志轮转

小樊
44
2025-10-13 07:21:47
栏目: 编程语言

在CentOS上配置Golang应用程序的日志轮转,通常可以通过以下几种方法实现:

方法一:使用系统日志服务(如rsyslog)

  1. 安装rsyslog

    sudo yum install rsyslog
    
  2. 配置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

  3. 重启rsyslog服务

    sudo systemctl restart rsyslog
    
  4. 配置日志轮转: 编辑/etc/logrotate.d/rsyslog,确保包含以下内容:

    /var/log/your_go_app.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        create 640 root adm
    }
    

    这将每天轮转日志,并保留最近7天的日志文件。

方法二:使用logrotate工具

  1. 创建日志文件: 确保你的Go应用程序将日志写入一个特定的文件,例如/var/log/your_go_app.log

  2. 配置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天的日志文件。

  3. 测试logrotate配置

    sudo logrotate -f /etc/logrotate.d/your_go_app
    

方法三:在Go应用程序中使用logrus和lumberjack

如果你希望在Go应用程序内部处理日志轮转,可以使用logruslumberjack库。

  1. 安装依赖

    go get github.com/sirupsen/logrus
    go get gopkg.in/natefinch/lumberjack.v2
    
  2. 配置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")
    }
    
  3. 运行你的Go应用程序

    go run main.go
    

通过以上方法,你可以在CentOS上配置Golang应用程序的日志轮转,确保日志文件不会无限增长,并且可以方便地进行管理和归档。

0