首页 > 解决方案 > 如何将记录器中间件输出数据传递到 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),
        )
    })
}

标签: go

解决方案


大概逻辑是这样的,我没有用过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())
    }
}

推荐阅读