Files
soft_usite/rest/middlewares/log.go
T
2025-02-06 14:22:29 -05:00

48 lines
841 B
Go

package middlewares
import (
"time"
"github.com/gofiber/fiber/v2"
"github.com/oarkflow/log"
)
func NewLog(logger *log.Logger, skip func(c *fiber.Ctx) bool) fiber.Handler {
return func(c *fiber.Ctx) error {
start := time.Now()
next := c.Next()
if skip != nil && skip(c) {
return nil
}
end := time.Now()
latency := end.Sub(start)
status := c.Response().StatusCode()
msg := "Request"
if next != nil {
msg = next.Error()
}
var e *log.Entry
switch {
case status >= 400 && status < 500:
e = logger.Warn()
case status >= 500:
e = logger.Error()
default:
e = logger.Info()
}
e.Int("status", status).
Str("method", c.Method()).
Str("path", c.Path()).
Str("ip", c.IP()).
Dur("latency", latency).
Str("user_agent", c.Get(fiber.HeaderUserAgent)).
Msg(msg)
return nil
}
}