From 83a9648b7a66c8f03f5eb128e436ab4448b5cb1c Mon Sep 17 00:00:00 2001 From: itsscb Date: Fri, 22 Sep 2023 21:21:45 +0200 Subject: [PATCH] ft/adds logger to api.server --- api/logger.go | 36 ++++++++++++++++++++++++++++++++++++ api/server.go | 13 ++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 api/logger.go diff --git a/api/logger.go b/api/logger.go new file mode 100644 index 0000000..21e2903 --- /dev/null +++ b/api/logger.go @@ -0,0 +1,36 @@ +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 buf bytes.Buffer + // tee := io.TeeReader(c.Request.Body, &buf) + // body, _ := io.ReadAll(tee) + // c.Request.Body = io.NopCloser(&buf) + c.Next() + duration := time.Since(t).Milliseconds() + + log := []slog.Attr{ + slog.String("METHOD", c.Request.Method), + slog.String("PATH", c.Request.RequestURI), + slog.String("DURATION", fmt.Sprintf("%d ms", duration)), + // slog.String("BODY", string(body)), + } + + logger.LogAttrs( + c, + slog.LevelDebug, + "http", + log..., + ) + } +} diff --git a/api/server.go b/api/server.go index b57d1a7..5ae00c6 100644 --- a/api/server.go +++ b/api/server.go @@ -1,6 +1,9 @@ package api import ( + "log/slog" + "os" + "github.com/gin-gonic/gin" db "github.com/itsscb/df/db/sqlc" ) @@ -17,7 +20,15 @@ func NewServer(store db.Store) *Server { store: store, } - router := gin.Default() + opts := slog.HandlerOptions{ + Level: slog.LevelDebug, + } + logger := slog.New(slog.NewJSONHandler(os.Stdout, &opts)) + router := gin.New() + + router.Use(gin.Recovery()) + + router.Use(Logger(logger)) router.POST("/accounts", server.createAccount) router.GET("/accounts/:id", server.getAccount)