我尝试从中间件记录响应正文。我可以获得与Request对象有关的所有数据。现在,尝试记录单个请求的响应代码和响应正文。
我试图从w http.ResponseWriter
捕获响应正文和响应代码,但未能成功。这是示例代码。我正在使用go的默认http
和logrus
进行记录。
next.ServeHTTP(w, r.WithContext(ctx))
end := time.Now().UTC()
latency := end.Sub(start)
// request logging
log.WithFields(log.Fields{
"path": r.URL.Path,
"method": r.Method,
"body": body,
"auth_user": claims,
"latency": latency,
"useragent": r.Header.Get("User-Agent"),
"response_body": ,// cannot get response body here
"status": "", //cannot get response header here
}).Info("request data")
有人可以帮我吗?