package middleware import ( "fmt" "time" "github.com/gin-gonic/gin" ) // LoggerMiddleware 自定义日志中间件 func LoggerMiddleware() gin.HandlerFunc { return gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string { return fmt.Sprintf("[%s] %s %s %s %d %s %s\n", param.TimeStamp.Format("2006-01-02 15:04:05"), param.ClientIP, param.Method, param.Path, param.StatusCode, param.Latency, param.ErrorMessage, ) }) } // RequestIDMiddleware 请求ID中间件 func RequestIDMiddleware() gin.HandlerFunc { return func(c *gin.Context) { requestID := c.GetHeader("X-Request-ID") if requestID == "" { requestID = generateRequestID() } c.Set("request_id", requestID) c.Header("X-Request-ID", requestID) c.Next() } } // generateRequestID 生成请求ID func generateRequestID() string { return fmt.Sprintf("%d", time.Now().UnixNano()) } // GetRequestID 从上下文中获取请求ID func GetRequestID(c *gin.Context) string { if requestID, exists := c.Get("request_id"); exists { return requestID.(string) } return "" }