package middlewares import ( "time" "git.secnex.io/secnex/masterlog" "github.com/gofiber/fiber/v2" ) // RequestLogger logs incoming HTTP requests via masterlog. func RequestLogger() fiber.Handler { return func(c *fiber.Ctx) error { start := time.Now() err := c.Next() duration := time.Since(start) entry := map[string]interface{}{ "method": c.Method(), "path": c.OriginalURL(), "ip": c.IP(), "duration": duration.String(), "status": c.Response().StatusCode(), "user_agent": c.Get("User-Agent"), } if err != nil { entry["error"] = err.Error() masterlog.Error( "HTTP request failed", entry, ) return err } if status := c.Response().StatusCode(); status >= fiber.StatusInternalServerError { masterlog.Error( "HTTP request failed", entry, ) } else { masterlog.Info( "HTTP request successful", entry, ) } return nil } }