温馨提示×

centos上golang日志轮转怎么做

小樊
56
2025-12-31 07:37:19
栏目: 编程语言

在CentOS系统上,使用Golang进行日志轮转可以通过多种方式实现。以下是两种常见的方法:

方法一:使用第三方库

  1. 安装第三方日志库: 你可以使用logrus或zap等流行的日志库,它们都支持日志轮转。

    go get github.com/sirupsen/logrus
    
  2. 配置日志轮转: 使用logrus的SetReportHook方法来设置日志轮转钩子。

    package main
    
    import (
        "github.com/sirupsen/logrus"
        "gopkg.in/natefinch/lumberjack.v2"
    )
    
    func main() {
        log := logrus.New()
    
        // 设置日志轮转配置
        log.SetReportHook(&lumberjack.Logger{
            Filename:   "/var/log/myapp.log",
            MaxSize:    10, // 单个日志文件最大大小(MB)
            MaxBackups: 3,  // 最多保留的旧日志文件数量
            MaxAge:     28, // 最多保留的旧日志文件天数
            Compress:   true, // 是否压缩旧日志文件
        })
    
        log.Info("This is an info message")
    }
    

方法二:使用系统工具

  1. 使用logrotate工具: logrotate是Linux系统中用于管理日志文件的工具,可以自动轮转、压缩和删除旧日志文件。

  2. 配置logrotate: 创建一个logrotate配置文件,例如/etc/logrotate.d/myapp。

    /var/log/myapp.log {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 640 root root
    }
    

    这个配置文件的意思是:

    • 每天轮转一次日志文件。
    • 保留最近7天的日志文件。
    • 压缩旧日志文件。
    • 如果日志文件丢失,不会报错。
    • 如果日志文件为空,不进行轮转。
    • 创建新的日志文件,权限为640,属主和属组为root。
  3. 重启logrotate服务: 确保logrotate服务正在运行并应用新的配置。

    sudo systemctl restart logrotate
    

总结

  • 第三方库:适用于需要在应用程序内部处理日志轮转的场景,提供了更多的灵活性和控制。
  • 系统工具:适用于希望利用系统级工具来管理日志文件的场景,配置简单且易于维护。

根据你的具体需求选择合适的方法即可。

0 踩