首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Martini中间件,如果响应码大于399,则记录错误

使用Martini中间件,如果响应码大于399,则记录错误
EN

Stack Overflow用户
提问于 2020-02-12 09:57:45
回答 1查看 51关注 0票数 0

如果我的服务器处理一个请求,并将响应代码写成大于399,我想记录一个错误跟踪:

代码语言:javascript
复制
    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
        }

})

在给定状态代码的情况下,有没有办法读取响应?如果我们将错误发送回客户端,我如何拦截错误消息并将其记录下来?

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 23:15:06

我在马提尼的自述里找到了c.MapTo。如果我理解正确的话,这应该是可行的:

代码语言:javascript
复制
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())
    }

})

请注意,我不熟悉马提尼,所以我不确定这是否会工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60180021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档