在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。