centos

CentOS中Golang日志轮转配置

小樊
48
2025-08-28 21:57:58
栏目: 编程语言

在CentOS系统中,Golang应用程序的日志轮转可以通过配置logrus库或者使用系统级的logrotate工具来实现。下面分别介绍这两种方法:

方法一:使用logrus库进行日志轮转

  1. 安装logrus库: 如果你还没有安装logrus库,可以使用以下命令进行安装:

    go get github.com/sirupsen/logrus
    
  2. 配置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")
    }
    

方法二:使用系统级的logrotate工具

  1. 创建日志文件: 确保你的Golang应用程序生成的日志文件路径是固定的,例如/var/log/myapp.log

  2. 配置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。
  3. 测试logrotate配置: 你可以手动测试logrotate配置是否生效:

    logrotate -f /etc/logrotate.d/myapp
    

    这将强制logrotate立即应用配置并轮转日志文件。

通过以上两种方法,你可以在CentOS系统中实现Golang应用程序的日志轮转。选择哪种方法取决于你的具体需求和偏好。

0
看了该问题的人还看了