Add logger & implement fiber error handling

This commit is contained in:
William Bouzourène 2025-01-20 17:24:19 +01:00
parent 639652bfeb
commit 5e3814e4fb
8 changed files with 400 additions and 25 deletions

55
helpers/error_handler.go Normal file
View file

@ -0,0 +1,55 @@
package helpers
import (
"errors"
"fmt"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/log"
)
func FiberErrorHandler(c *fiber.Ctx, err error) error {
// Status code defaults to 500
code := fiber.StatusInternalServerError
// Retrieve the custom status code if it's a *fiber.Error
var e *fiber.Error
if errors.As(err, &e) {
code = e.Code
}
title := fmt.Sprintf("Erreur %d", code)
message := err.Error()
if code == 500 {
log := GetLogger()
log.Error(
err,
"url", c.OriginalURL(),
"method", c.Method(),
"code", code,
"ip", c.IP(),
)
message = "Une erreur est survenue, merci de prendre contact avec un administrateur."
}
// Send custom error page
err = c.Status(code).Render("error_page", fiber.Map{
"PageTitle": title,
"Code": code,
"Message": message,
})
if err != nil {
log.Error(err)
return c.Status(
fiber.StatusInternalServerError,
).SendString(
"Internal Server Error",
)
}
return nil
}