我已經(jīng)了解到您可以“裝飾”HTTP傳輸,以便您可以了解請求的詳細信息,但是我無法完全弄清楚如何在同一行中記錄URL。https://play.golang.org/p/g-ypQN9ceGa結(jié)果 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 在結(jié)構(gòu)中傳遞上下文,特別是在 https://blog.golang.org/context-and-structs 以傳遞上下文結(jié)束的情況下。上下文中作為參數(shù)。
2 回答

呼啦一陣風
TA貢獻1802條經(jīng)驗 獲得超6個贊
從 net/http 瀏覽 request.go 中如何構(gòu)造請求的行為。您會看到該字段從未設(shè)置在那里。引用同一參考文獻,RequestURI
通常應改用 URL 字段。
在 HTTP 客戶端請求中設(shè)置此字段是錯誤的
因此,我建議您改用。
它是從請求 uri 解析而來的。它應該具有您需要的數(shù)據(jù)。request.URL
您可以按如下方式構(gòu)造輸出:
f := log.Fields{ "url": fmt.Sprintf("%s %s%s", r.Method, r.URL.Host, r.URL.Path), }
此外,根據(jù)我的經(jīng)驗,使用上下文要容易得多。WithValue 并將上下文作為參數(shù)傳遞。

波斯汪
TA貢獻1811條經(jīng)驗 獲得超4個贊
在代碼中替換為 以記錄完整、有效的 URL(https://golang.org/pkg/net/url/#URL.String)。 在客戶端為空(https://golang.org/pkg/net/http/#Request),如代碼輸出所示。r.RequestURI
r.URL.String()
RequestURI
我不明白與你的問題有什么關(guān)系,但我相信 https://blog.golang.org/context-and-structs 被認為是“最佳實踐”。context.Context
- 2 回答
- 0 關(guān)注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消