package middleware import ( "time" "github.com/gin-gonic/gin" "go.uber.org/zap" ) // Logger 基于 zap 的请求日志中间件 // 只记录 method/path/status/latency/request_id,**不记录请求体**(避免泄露用户输入) func Logger(logger *zap.Logger) gin.HandlerFunc { return func(c *gin.Context) { start := time.Now() c.Next() latency := time.Since(start) logger.Info("HTTP", zap.String("method", c.Request.Method), zap.String("path", c.Request.URL.Path), zap.Int("status", c.Writer.Status()), zap.Int("size", c.Writer.Size()), zap.String("remote_ip", c.ClientIP()), zap.String("user_agent", c.Request.UserAgent()), zap.String("request_id", c.GetString("request_id")), zap.Duration("latency", latency), ) } }