如果我的服务器处理一个请求,并将响应代码写成大于399,我想记录一个错误跟踪:
bm.Use(func(res http.ResponseWriter, req *http.Request, c martini.Context, log *logging.Logger, statter statsd.Statter) {
start := time.Now()
rw := res.(martini.ResponseWriter)
c.Next() // do all the middleware handler stuff
if res.(martini.ResponseWriter).Status() > 399 {
log.Warning("%v", "print response here") // how to read response here
}
})在给定状态代码的情况下,有没有办法读取响应?如果我们将错误发送回客户端,我如何拦截错误消息并将其记录下来?
发布于 2020-02-12 23:15:06
我在马提尼的自述里找到了c.MapTo。如果我理解正确的话,这应该是可行的:
bm.Use(func(res http.ResponseWriter, req *http.Request, c martini.Context, log *logging.Logger, statter statsd.Statter) {
var rsp bytes.Buffer
rw := io.MultiWriter(res, &rsp)
c.MapTo(rw, (*http.ResponseWriter)(nil))
c.Next() // do all the middleware handler stuff
if res.(martini.ResponseWriter).Status() > 399 {
log.Warning("%v", rsp.String())
}
})请注意,我不熟悉马提尼,所以我不确定这是否会工作。
https://stackoverflow.com/questions/60180021
复制相似问题