package middleware import ( "time" "github.com/gin-gonic/gin" "go.uber.org/zap" ) // Logger 日志中间件 func Logger(logger *zap.Logger) gin.HandlerFunc { return func(c *gin.Context) { start := time.Now() path := c.Request.URL.Path raw := c.Request.URL.RawQuery // 处理请求 c.Next() // 记录请求信息 latency := time.Since(start) clientIP := c.ClientIP() method := c.Request.Method statusCode := c.Writer.Status() bodySize := c.Writer.Size() if raw != "" { path = path + "?" + raw } // 记录访问日志 logger.Info("HTTP Request", zap.String("method", method), zap.String("path", path), zap.Int("status", statusCode), zap.String("ip", clientIP), zap.Duration("latency", latency), zap.Int("size", bodySize), ) } }