在Golang中,我們可以使用標準庫"log"或者第三方庫(如logrus、zap等)來記錄日志。這里我將為您展示如何使用標準庫"log"記錄HTTP請求。
首先,我們需要導入相關的包:
package main
import (
"fmt"
"log"
"net/http"
)
接下來,我們創建一個簡單的HTTP處理函數,用于記錄請求信息:
func requestHandler(w http.ResponseWriter, r *http.Request) {
log.Printf("Request: %s %s", r.Method, r.URL.Path)
log.Printf("Headers: %v", r.Header)
log.Printf("Body: %s", r.Body)
fmt.Fprintf(w, "Hello, World!")
}
在這個處理函數中,我們使用log.Printf
記錄了請求的方法、URL路徑、請求頭和請求體。注意,r.Body
是一個io.ReadCloser
類型,我們不能直接將其轉換為字符串。在實際應用中,您可能需要讀取并處理請求體,然后再將其寫回響應。為了簡化示例,我們在這里直接將請求體寫入響應。
最后,我們在main
函數中設置路由并啟動HTTP服務器:
func main() {
http.HandleFunc("/", requestHandler)
log.Println("Server is running on port 8080...")
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal(err)
}
}
現在,當您運行此程序并通過瀏覽器或其他HTTP客戶端訪問它時,您將在控制臺中看到請求的詳細信息。
如果您需要更高級的日志功能,可以考慮使用第三方庫,如logrus或zap。這些庫提供了更多的功能,例如結構化日志、日志級別和更好的性能。