From 4e06072d96c687180c647dd935a2a8be995f5104 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 1 Jul 2023 14:18:11 +0200 Subject: [PATCH] use zerolog logger for gin server --- server/logger.go | 40 ++++++++++++++++++++++++++++++++++++++++ server/server.go | 5 ++++- tests/scopes_test.go | 2 +- 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 server/logger.go diff --git a/server/logger.go b/server/logger.go new file mode 100644 index 0000000..b127096 --- /dev/null +++ b/server/logger.go @@ -0,0 +1,40 @@ +package server + +import ( + "git.sr.ht/~cco/go-scopes/lib" + "git.sr.ht/~cco/go-scopes/logging" + "github.com/gin-gonic/gin" + "github.com/rs/zerolog" +) + +func Logger(ctx lib.Context) gin.HandlerFunc { + return func(c *gin.Context) { + // before request + // t := time.Now() + path := c.Request.URL.Path + raw := c.Request.URL.RawQuery + if raw != "" { + path = path + "?" + raw + } + c.Next() + // after request + msg := c.Errors.String() + if msg == "" { + msg = "request" + } + status := c.Writer.Status() + var evt *zerolog.Event + switch { + case status >= 500: + evt = logging.Error(ctx) + case status >= 400: + evt = logging.Warn(ctx) + default: + evt = logging.Info(ctx) + } + evt.Str("method", c.Request.Method).Str("path", path). + // Dur("resp_time", time.Since(t)). + Int("status", status). + Str("client_ip", c.ClientIP()).Msg(msg) + } +} diff --git a/server/server.go b/server/server.go index d00679c..8e02ad9 100644 --- a/server/server.go +++ b/server/server.go @@ -19,6 +19,7 @@ type ServerState struct { } func Start(ctx lib.Context) { + gin.SetMode(gin.ReleaseMode) lib.GetCfg[*Cfg](ctx).BaseCfg.WithDoneHandler(HandleDone) Serve(ctx) lib.RunCtx(ctx, core.Listen) @@ -30,7 +31,9 @@ func HandleDone(ctx lib.Context) bool { } func Serve(ctx lib.Context) { - r := gin.Default() + //r := gin.Default() + r := gin.New() + r.Use(Logger(ctx)) r.GET("/*action", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") }) diff --git a/tests/scopes_test.go b/tests/scopes_test.go index 0bc01c5..0a5353c 100644 --- a/tests/scopes_test.go +++ b/tests/scopes_test.go @@ -19,7 +19,7 @@ func TestConfig(tb *tbase.T) { t.Run("send", SendTest) t.Run("client", ClientTest) t.TearDownApp() - t.AssertEqual(t.LogCount(true), 11) + t.AssertEqual(t.LogCount(true), 12) } func AppTest(t *testing.T) {