在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。这些库提供了更多的功能,例如结构化日志、日志级别和更好的性能。