溫馨提示×

Golang日志中如何記錄請求信息

小樊
56
2025-06-26 05:33:10
欄目: 編程語言

在Golang中,我們可以使用標準庫"log"或者第三方庫(如logrus、zap等)來記錄日志。這里我將為您提供一個使用標準庫"log"記錄HTTP請求信息的示例。

首先,我們需要導入相關的包:

package main

import (
	"log"
	"net/http"
)

接下來,我們可以創建一個自定義的日志記錄器,用于記錄請求信息:

type Logger struct {
	logger *log.Logger
}

func NewLogger(prefix string) *Logger {
	return &Logger{
		logger: log.New(log.Writer(), prefix, log.LstdFlags),
	}
}

func (l *Logger) LogRequest(r *http.Request) {
	l.logger.Printf("Request: %s %s %s", r.RemoteAddr, r.Method, r.URL.String())
}

現在,我們可以在HTTP處理函數中使用這個自定義的日志記錄器來記錄請求信息:

func main() {
	logger := NewLogger("[HTTP] ")

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		logger.LogRequest(r)

		// 處理請求并返回響應
		w.Write([]byte("Hello, World!"))
	})

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

在這個示例中,我們創建了一個名為Logger的結構體,它包含一個*log.Logger類型的字段。我們還定義了一個NewLogger函數,用于創建一個新的Logger實例,并設置日志前綴。LogRequest方法用于記錄請求信息,包括客戶端IP地址、HTTP方法和請求URL。

main函數中,我們創建了一個Logger實例,并將其傳遞給HTTP處理函數。當有請求到達時,處理函數會調用LogRequest方法記錄請求信息。

運行這個程序后,您將看到類似以下的日志輸出:

[HTTP] 127.0.0.1:56789 GET /
[HTTP] 127.0.0.1:56790 POST /some-path

這只是一個簡單的示例,您可以根據需要對其進行擴展,例如添加更多的請求信息、日志級別等。如果您需要更高級的日志功能,可以考慮使用第三方庫,如logrus或zap。

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