package middleware import ( "fmt" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" "mc-client-updater-server/pkg/log" "time" ) func LoggerMiddleware() gin.HandlerFunc { return func(c *gin.Context) { startTime := time.Now() c.Next() // 调用该请求的剩余处理程序 stopTime := time.Since(startTime) spendTime := fmt.Sprintf("%.3f ms", float64(stopTime.Nanoseconds())/1000000) statusCode := c.Writer.Status() dataSize := c.Writer.Size() if dataSize < 0 { dataSize = 0 } method := c.Request.Method url := c.Request.RequestURI Log := log.Logger.WithFields(logrus.Fields{ "spendTime": spendTime, "path": url, "method": method, "status": statusCode, }) if len(c.Errors) > 0 { // 内部错误 Log.Error(c.Errors.ByType(gin.ErrorTypePrivate)) } if statusCode == 500 || (statusCode >= 5000 && statusCode < 6000) { Log.Error() } else if statusCode >= 400 && statusCode < 500 { Log.Warn() } else { Log.Info() } } }