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())) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |