gpt4 book ai didi

http - 在一个结构化的日志行中跟踪 Go 中的 HTTP 请求

转载 作者:行者123 更新时间:2023-12-03 18:33:23 25 4
gpt4 key购买 nike

我了解到您可以“装饰” HTTP 传输,以便您可以了解请求的详细信息,但是我无法弄清楚如何在同一行中记录 URL。
https://play.golang.org/p/g-ypQN9ceGa
结果是

  INFO[0000] Client request            dns_start_ms=0 first_byte_ms=590 response_code=200 total_ms=590 url=
INFO[0000] 200
我一直很困惑我是否应该使用 https://golang.org/pkg/context/#WithValue在结构中传递上下文,尤其是在 https://blog.golang.org/context-and-structs 的情况下以 结束将 context.Context 作为参数传入 .

最佳答案

request.go 中查看如何构造请求的行为来自网络/http。你看到 RequestURI字段永远不会设置在那里。来自相同的引用 reference ,

Usually the URL field should be used instead.
It is an error to set this field in an HTTP client request


所以,我建议你使用 request.URL反而。
它是从请求 uri 中解析出来的。它应该有你需要的数据。
您可以按如下方式构建输出:
f := log.Fields{
"url": fmt.Sprintf("%s %s%s", r.Method, r.URL.Host, r.URL.Path),
}
此外,根据我的经验,使用 context.WithValue 要容易得多。并将上下文作为参数传递。

关于http - 在一个结构化的日志行中跟踪 Go 中的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67144532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com