前提:我发现了类似的问题,但在我的案例中不起作用,所以请不要将其标记为重复。
我在Go中有一个HTTP服务器,我已经创建了一个中间件来记录请求,响应时间,我也想记录响应。
我在包下调用的函数中使用过。如何正确获取响应正文、状态和标头,并将它们与其他数据一起记录?httputil.DumpRequestHTTPRequestlogw http.ResponseWriter
我的问题是:我想截获响应标头,状态和正文,并与请求和响应时间一起记录
代码如下:
log "core/logger"
...
func RequestLoggerMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
defer func() {
log.Info(
fmt.Sprintf(
"[Request: %s] [Execution time: %v] [Response: %s]",
log.HTTPRequest(r),
time.Since(start),
// RESPONSE DATA HERE !!!!!!!
))
}()
next.ServeHTTP(w, r)
})
}
达令说
收到一只叮咚