package middlewares import ( "time" "nearle/utils" "github.com/gofiber/fiber/v2" ) // ZapLogger is a Fiber middleware that logs HTTP requests using Zap. func ZapLogger() fiber.Handler { return func(c *fiber.Ctx) error { start := time.Now() // Handle the request err := c.Next() latency := time.Since(start).String() status := c.Response().StatusCode() method := c.Method() path := c.Path() ip := c.IP() fields := []interface{}{ "status", status, "method", method, "path", path, "ip", ip, "latency", latency, } if err != nil { fields = append(fields, "error", err.Error()) utils.Logger.Errorw("API Request Failed", fields...) return err } utils.Logger.Infow("API Request Successful", fields...) return nil } }