35 lines
553 B
Go
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...,
|
|
)
|
|
}
|
|
}
|