package middlewares import ( "case-api/global" "fmt" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" "time" ) // Logrus 日志中间件 func Logrus() gin.HandlerFunc { return func(c *gin.Context) { // 开始时间 startTime := time.Now() // 处理请求 c.Next() // 获取 请求 参数 params := make(map[string]string) paramsRaw, ok := c.Get("params") if ok { requestParams, ok := paramsRaw.(map[string]string) if ok || len(requestParams) > 0 { params = requestParams } } // 结束时间 endTime := time.Now() // 执行时间 latencyTime := fmt.Sprintf("%6v", endTime.Sub(startTime)) // 请求方式 reqMethod := c.Request.Method // 请求路由 reqUri := c.Request.RequestURI // 状态码 statusCode := c.Writer.Status() // 请求IP clientIP := c.ClientIP() // 日志格式 global.Logger.WithFields(logrus.Fields{ "http_status": statusCode, "total_time": latencyTime, "ip": clientIP, "method": reqMethod, "uri": reqUri, "params": params, }).Info("access") } }