centos

CentOS Golang日志配置指南

小樊
34
2025-08-08 15:50:38
栏目: 编程语言

CentOS Golang日志配置指南

一、基础配置(标准库log包)

  1. 输出到文件

    package main
    import (
        "log"
        "os"
    )
    func main() {
        logFile, err := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
        if err != nil {
            log.Fatal(err)
        }
        defer logFile.Close()
        log.SetOutput(logFile) // 设置输出目标
        log.SetPrefix("[INFO] ") // 日志前缀
        log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) // 日期、时间、文件名
        log.Println("这是一条普通日志")
    }
    
    • 说明:通过os.OpenFile指定日志文件路径,SetOutput定向输出,支持控制台或文件。
  2. 日志轮转(防止文件过大)
    使用第三方库lumberjack

    import "gopkg.in/natefinch/lumberjack.v2"
    log.SetOutput(&lumberjack.Logger{
        Filename:   "/var/log/myapp.log",
        MaxSize:    10,    // 单个文件最大10MB
        MaxBackups: 5,     // 保留5个旧文件
        MaxAge:     30,    // 保留30天
        Compress:   true,  // 压缩旧文件
    })
    

二、第三方日志库(推荐)

1. logrus(结构化日志)
2. zap(高性能日志)

三、系统集成(可选)

  1. rsyslog集中管理

    • 编辑/etc/rsyslog.conf,添加规则:
      *.* /var/log/golang.log
    • 重启服务:systemctl restart rsyslog
    • 在Golang中通过os.OpenFile将日志输出到指定路径,由rsyslog统一管理。
  2. logrotate定时轮转

    • 创建配置文件/etc/logrotate.d/myapp
      /var/log/myapp.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
      }
      
    • 手动触发轮转:logrotate -f /etc/logrotate.d/myapp

四、最佳实践建议

五、参考资料

0
看了该问题的人还看了