go - 如何将记录器中间件输出数据传递到 golang 中的 mysql 表中?
问题描述
如何从记录器中间件将以下三个参数输出 param.method、param.statusCode、param.TimeStamp.Format(time.RFC822) 插入 mysql 表?
func logger() gin.HandlerFunc {
return gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
return fmt.Sprintf("%s %d %s \n",
param.Method,
param.StatusCode,
param.TimeStamp.Format(time.RFC822),
)
})
}
解决方案
大概逻辑是这样的,我没有用过gin,代码也没有测试过。
请求方法、响应状态码、请求完成时间、请求处理时间都记录在db中。
func logger(db *sql.DB) gin.HandlerFunc {
return func(ctx *gin.Context) {
now := time.Now()
ctx.Next()
db.Exec("INSERT INTO tb_logger(method,code,accesstime,handletime) VALUE(?,?,?,?)", ctx.Request.Method, ctx.Writer.Status(), time.Now().Format(time.RFC822), time.Now().Sub(now).String())
}
}
推荐阅读
- javascript - jquery:如何检查是否设置了事件
- string - 我编写了一个函数来将字符串分成由 $ 分隔的部分现在我需要使用 select from 来访问它,但出现错误
- javascript - 当数据库中没有数据时,Select2 AJAX 不显示“未找到数据”,而是显示搜索参数作为选择选项
- sql - 优化 postgresql 查询
- c++ - WinUsb with C++ Builder 10.3 社区版
- html - 没有从 soup.findAll() 获得所有结果
- amp-html - 带有 amp-auto-ads 的 Adsense 覆盖广告?
- google-cloud-dataflow - 当新数据到达 Bigquery 时触发数据流作业
- sql - 如何使用最右边的表过滤多对多左连接?
- javascript - 在 Bootstrap Carousel 中放置 DIV 容器