package middleware import ( "time" "github.com/gin-gonic/gin" "go.uber.org/zap" ) // Logger 日志中间件 func Logger(logger *zap.Logger) gin.HandlerFunc { return gin.HandlerFunc(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() if raw != "" { path = path + "?" + raw } logger.Info("HTTP请求", zap.String("method", method), zap.String("path", path), zap.Int("status", statusCode), zap.String("ip", clientIP), zap.Duration("latency", latency), zap.String("user_agent", c.Request.UserAgent()), ) }) }