df/api/logger.go
2023-09-22 23:02:47 +02:00

35 lines
553 B
Go

package api
import (
"fmt"
"log/slog"
"time"
"github.com/gin-gonic/gin"
)
func Logger(logger *slog.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
t := time.Now()
var log []slog.Attr
c.Next()
duration := time.Since(t).Milliseconds()
log = append(log,
slog.Int("STATUS", c.Writer.Status()),
slog.String("METHOD", c.Request.Method),
slog.String("PATH", c.Request.RequestURI),
slog.String("DURATION", fmt.Sprintf("%d ms", duration)),
)
logger.LogAttrs(
c,
slog.LevelDebug,
"http",
log...,
)
}
}