Go语言教程之边写边学:如何处理HTTP服务器日志记录

在Go中,有几种方法可以处理HTTP客户端或服务器中的日志记录。一种常见的方法是使用标准库中的日志包。下面是如何使用日志包在客户端中记录HTTP请求和响应的示例:

package main

import (
	"log"
	"net/http"
	"net/http/httputil"
	"time"
)

func main() {
	client := &http.Client{
		Timeout: 10 * time.Second,
	}

	req, err := http.NewRequest("GET", "https://example.com", nil)
	if err != nil {
		log.Fatal(err)
	}

	// 通过httputil.DumpRequestOut获取请求数据reqBytes, err := httputil.DumpRequestOut(req, true)
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("Request: %s", reqBytes)

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}

	// 通过httputil.DumpResponse获取响应数据respBytes, err := httputil.DumpResponse(resp, true)
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("Response: %s", respBytes)

	defer resp.Body.Close()
}

此代码设置超时为10秒的HTTP客户端,创建要https://example.com的GET请求,并使用httputil记录传出请求。DumpRequestOut,使用客户端发送请求,使用httputil记录传入的响应。DumpResponse,最后关闭响应正文。

您可以自定义日志记录输出以满足您的需求,例如,通过使用不同的日志级别或格式,或者通过记录其他信息(如时间戳或请求/响应标头)来自定义。