Golang日志中如何记录请求ID

473
2025/4/12 12:32:19
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Golang中,我们可以使用log包来记录日志。为了在日志中记录请求ID,我们需要在日志记录时将请求ID字段添加到日志中。这可以通过使用结构化日志库(如logruszap)或者自定义日志格式来实现。

以下是使用logruszap两个流行的日志库记录请求ID的示例:

  1. 使用logrus记录请求ID:

首先,安装logrus库:

go get github.com/sirupsen/logrus

然后,在代码中使用logrus记录请求ID:

package main

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

func main() {
	logrus.SetFormatter(&logrus.JSONFormatter{})
	logrus.SetReportCaller(true)

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		requestID := r.Header.Get("X-Request-ID")
		if requestID == "" {
			requestID = "unknown"
		}
		logrus.WithFields(logrus.Fields{
			"request_id": requestID,
		}).Info("Request received")
	})

	http.ListenAndServe(":8080", nil)
}
  1. 使用zap记录请求ID:

首先,安装zap库:

go get go.uber.org/zap

然后,在代码中使用zap记录请求ID:

package main

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

func main() {
	logger, _ := zap.NewProduction()
	defer logger.Sync()

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		requestID := r.Header.Get("X-Request-ID")
		if requestID == "" {
			requestID = "unknown"
		}
		logger.Info("Request received",
			zap.String("request_id", requestID),
		)
	})

	http.ListenAndServe(":8080", nil)
}

在这两个示例中,我们从HTTP请求头中获取请求ID,并将其添加到日志记录中。如果没有提供请求ID,我们将其设置为"unknown"。这样,当查看日志时,我们可以轻松地识别和跟踪每个请求。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: linux怎么查看CentOS版本号