centos

CentOS下Go语言日志如何配置

小樊
37
2026-01-10 00:00:40
栏目: 编程语言

在CentOS系统下,配置Go语言日志可以通过多种方式实现。以下是一些常见的方法:

1. 使用标准库 log

Go语言的标准库 log 包提供了基本的日志功能。你可以通过设置不同的参数来配置日志输出。

package main

import (
    "log"
    "os"
)

func main() {
    // 设置日志输出到标准输出,并添加时间戳
    log.SetOutput(os.Stdout)
    log.SetFlags(log.LstdFlags | log.Lshortfile)

    // 记录日志
    log.Println("This is an info message")
    log.Printf("This is a formatted %s message", "info")
}

2. 使用第三方日志库

为了更灵活和强大的日志功能,你可以使用第三方日志库,如 logruszap

使用 logrus

logrus 是一个结构化日志库,支持多种日志级别和格式。

首先,安装 logrus

go get github.com/sirupsen/logrus

然后,在代码中使用:

package main

import (
    "github.com/sirupsen/logrus"
)

func main() {
    // 设置日志级别
    logrus.SetLevel(logrus.InfoLevel)

    // 设置日志格式为JSON
    logrus.SetFormatter(&logrus.JSONFormatter{})

    // 记录日志
    logrus.Info("This is an info message")
    logrus.WithFields(logrus.Fields{
        "animal": "walrus",
        "size":   10,
    }).Info("A group of walrus emerges from the ocean")
}

使用 zap

zap 是一个高性能的日志库,适用于需要高性能的场景。

首先,安装 zap

go get go.uber.org/zap

然后,在代码中使用:

package main

import (
    "go.uber.org/zap"
)

func main() {
    // 创建一个生产环境的Logger
    logger, err := zap.NewProduction()
    if err != nil {
        panic(err)
    }
    defer logger.Sync()

    // 记录日志
    logger.Info("This is an info message")
    logger.Warn("This is a warning message")
    logger.Error("This is an error message")
}

3. 配置文件

你可以使用配置文件来管理日志配置,例如使用 viper 库来读取配置文件。

首先,安装 viper

go get github.com/spf13/viper

然后,创建一个配置文件 config.yaml

log:
  level: info
  format: json

接着,在代码中使用 viper 读取配置并配置日志:

package main

import (
    "fmt"
    "github.com/sirupsen/logrus"
    "github.com/spf13/viper"
)

func main() {
    // 读取配置文件
    viper.SetConfigName("config")
    viper.AddConfigPath(".")
    err := viper.ReadInConfig()
    if err != nil {
        panic(fmt.Errorf("Fatal error config file: %s \n", err))
    }

    // 获取日志级别
    logLevel := viper.GetString("log.level")
    logrus.SetLevel(logrus.Level(logLevel))

    // 获取日志格式
    logFormat := viper.GetString("log.format")
    switch logFormat {
    case "json":
        logrus.SetFormatter(&logrus.JSONFormatter{})
    case "text":
        logrus.SetFormatter(&logrus.TextFormatter{})
    default:
        logrus.SetFormatter(&logrus.TextFormatter{})
    }

    // 记录日志
    logrus.Info("This is an info message")
}

通过这些方法,你可以在CentOS系统下灵活地配置Go语言的日志输出。

0
看了该问题的人还看了