加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang记录http响应(除了请求)

发布时间:2020-12-16 09:27:50 所属栏目:大数据 来源:网络整理
导读:我使用Go和Gorilla Web工具包的mux和处理程序包来构建一个复杂的应用程序,其中一部分需要一个http服务器. Gorilla的mux和处理程序包工作得非常好,我能够成功启动并运行http服务器,并且记录请求非常简单. 但是,我无法确定如何记录回复.理想情况下,我想要一种
我使用Go和Gorilla Web工具包的mux和处理程序包来构建一个复杂的应用程序,其中一部分需要一个http服务器. Gorilla的mux和处理程序包工作得非常好,我能够成功启动并运行http服务器,并且记录请求非常简单.

但是,我无法确定如何记录回复.理想情况下,我想要一种类似于Gorilla的LoggingHandler的机制,它可以轻松地“包装”日志记录机制.

是否有一个Golang包可以轻松包装/记录响应?有没有办法以这种方式使用Go或Gorilla的功能,我没有考虑过?

解决方法

编辑对不起,我没有注意到你提到gorilla-mux,我只用杜松子酒尝试过这个,但如果它使用中间件,这应该仍然有用.

诀窍是,中间件中的c.Next()阻塞,直到所有后续中间件都返回.这是一个logrus解决方案.把它作为你的第一个中间件:

func Logrus(logger *logrus.Logger) gin.HandlerFunc {
    return func(c *gin.Context) {
        start := time.Now().UTC()
        path := c.Request.URL.Path
        c.Next()
        end := time.Now().UTC()
        latency := end.Sub(start)
        logger.WithFields(logrus.Fields{
            "status":     c.Writer.Status(),"method":     c.Request.Method,"path":       path,"ip":         c.ClientIP(),"duration":   latency,"user_agent": c.Request.UserAgent(),}).Info()
    }
}
GinEngine.Use(Logrus(logrus.StandardLogger()))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读