溫馨提示×

CentOS下Golang日志配置技巧

小樊
48
2025-06-20 12:57:31
欄目: 編程語言

在CentOS下配置Golang應用的日志,可以采用以下幾種方法:

使用標準庫 log

Golang的標準庫 log 包提供了基本的日志記錄功能。你可以通過設置日志級別、輸出格式和輸出目標來配置日志。例如,將日志輸出到文件并設置日志級別:

package main

import (
	"log"
	"os"
)

func main() {
	logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		log.Fatalf("error opening log file: %v", err)
	}
	defer logFile.Close()

	log.SetOutput(logFile)
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)

	log.Println("This is a log message")
	log.Fatalf("This is a fatal error message: %s", "error info")
}

使用第三方日志庫

logrus

logrus 是一個功能強大且易于使用的日志庫,支持多種格式的日志輸出和級別控制。以下是一個使用 logrus 的示例:

package main

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

func main() {
	log := logrus.New()

	// 設置日志格式為JSON
	log.SetFormatter(&logrus.JSONFormatter{})

	// 添加日志文件處理器
	file, err := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		log.Fatalf("Failed to open log file: %v", err)
	}
	log.SetOutput(file)

	// 記錄日志
	log.WithFields(logrus.Fields{
		"animal": "walrus",
		"size":   10,
	}).Info("A group of walrus emerges from the ocean")
}

zap

zap 是 Uber 開源的高性能日志庫,具有結構化日志記錄和高度定制化的特點。以下是一個使用 zap 的示例:

package main

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

func main() {
	config := zap.Config{
		Level: zap.NewAtomicLevelAt(zap.InfoLevel),
		Encoding: "json",
		EncoderConfig: zapcore.EncoderConfig{
			TimeKey:        "ts",
			LevelKey:       "level",
			MessageKey:     "msg",
			StacktraceKey:  "stacktrace",
			LineEnding:     zapcore.DefaultLineEnding,
			EncodeLevel:    zapcore.LowercaseLevelEncoder,
			EncodeTime:     zapcore.ISO8601TimeEncoder,
			EncodeDuration: zapcore.SecondsDurationEncoder,
			EncodeCaller:   zapcore.ShortCallerEncoder,
		},
		OutputPaths: []string{"stdout"},
		ErrorOutputPaths: []string{"stderr"},
	}

	logger := config.Build()
	defer logger.Sync() // flushes buffer, if any

	logger.Info("This is an info message")
	logger.Error("This is an error message", zap.String("err", "error info"))
}

日志輪轉

為了避免日志文件過大,可以使用 logrotate 進行日志輪轉。你可以創建一個 logrotate 配置文件,例如 /etc/logrotate.d/myapp

/path/to/your/logfile {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

然后運行 logrotate 命令來應用配置:

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

通過以上步驟,可以在CentOS系統上配置Golang日志,并根據實際需求選擇合適的日志庫和配置方式。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女