温馨提示×

CentOS系统Golang日志轮转怎么做

小樊
43
2025-09-03 21:57:41
栏目: 编程语言

在CentOS系统中,使用Golang编写的应用程序的日志轮转可以通过以下几种方法实现:

方法一:使用logrotate工具

  1. 安装logrotate(如果尚未安装):

    sudo yum install logrotate
    
  2. 创建一个logrotate配置文件: 在/etc/logrotate.d/目录下创建一个新的配置文件,例如myapp

    sudo nano /etc/logrotate.d/myapp
    
  3. 配置logrotate: 在配置文件中添加以下内容:

    /path/to/your/app.log {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 640 root root
    }
    

    解释:

    • daily: 每天轮转一次日志。
    • rotate 7: 保留7个轮转日志文件。
    • compress: 压缩旧日志文件。
    • delaycompress: 延迟压缩,直到下一次轮转。
    • missingok: 如果日志文件不存在,不会报错。
    • notifempty: 如果日志文件为空,不进行轮转。
    • create 640 root root: 创建新日志文件时的权限和所有者。
  4. 测试配置

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

方法二:在Golang代码中实现日志轮转

如果你希望在Golang代码中直接处理日志轮转,可以使用第三方库,例如lumberjack

  1. 安装lumberjack

    go get gopkg.in/natefinch/lumberjack.v2
    
  2. 在Golang代码中使用lumberjack

    package main
    
    import (
        "log"
        "gopkg.in/natefinch/lumberjack.v2"
    )
    
    func main() {
        logger := log.New(&lumberjack.Logger{
            Filename:   "/path/to/your/app.log",
            MaxSize:    1, // 单位是MB
            MaxBackups: 7,
            MaxAge:     28, // 单位是天
            Compress:   true,
        }, "prefix", log.LstdFlags)
    
        logger.Println("This is a log message")
    }
    

方法三:结合systemd服务

如果你使用systemd管理服务,可以在服务文件中配置日志轮转。

  1. 编辑服务文件

    sudo nano /etc/systemd/system/myapp.service
    
  2. 添加StandardOutputStandardError配置

    [Service]
    ExecStart=/path/to/your/app
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=myapp
    
  3. 重新加载systemd配置

    sudo systemctl daemon-reload
    
  4. 重启服务

    sudo systemctl restart myapp
    
  5. 配置rsyslog: 编辑/etc/rsyslog.conf/etc/rsyslog.d/50-default.conf,添加以下内容:

    if $programname == 'myapp' then /var/log/myapp.log
    & stop
    
  6. 重启rsyslog服务

    sudo systemctl restart rsyslog
    

通过以上方法,你可以在CentOS系统中实现Golang应用程序的日志轮转。选择适合你需求的方法进行配置即可。

0