From c9b6bcdf63d2ad115bd1a847b365c1ba93bff167 Mon Sep 17 00:00:00 2001 From: Raymond Jacobson Date: Mon, 7 Apr 2025 15:22:17 -0700 Subject: [PATCH 1/2] Nicer logs --- api/server.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/api/server.go b/api/server.go index 61c55a46..65fed677 100644 --- a/api/server.go +++ b/api/server.go @@ -61,6 +61,13 @@ func InitLogger(config Config) *zap.Logger { return logger } +func RequestTimer() fiber.Handler { + return func(c *fiber.Ctx) error { + c.Locals("start", time.Now()) + return c.Next() + } +} + func Min(handler func(*fiber.Ctx, bool) error) fiber.Handler { return func(c *fiber.Ctx) error { return handler(c, true) @@ -92,21 +99,27 @@ func NewApiServer(config Config) *ApiServer { app.Use(recover.New()) app.Use(cors.New()) + app.Use(RequestTimer()) app.Use(fiberzap.New(fiberzap.Config{ Logger: logger, + // Define custom fields to add to the logs FieldsFunc: func(c *fiber.Ctx) []zap.Field { fields := []zap.Field{} + if startTime, ok := c.Locals("start").(time.Time); ok { + latencyMs := float64(time.Since(startTime).Nanoseconds()) / float64(time.Millisecond) + fields = append(fields, zap.Float64("latency_ms", latencyMs)) + } + // Add upstream server to logs, if found if upstream, ok := c.Locals("upstream").(string); ok && upstream != "" { - fields = append(fields, - zap.String("upstream", upstream), - ) + fields = append(fields, zap.String("upstream", upstream)) } return fields }, + Fields: []string{"status", "method", "url", "route"}, })) app.Get("/", app.home) From b2b1b0bd472f2466199274216ae54f140d7aff2c Mon Sep 17 00:00:00 2001 From: Raymond Jacobson Date: Mon, 7 Apr 2025 15:23:50 -0700 Subject: [PATCH 2/2] Remove comment --- api/server.go | 1 - 1 file changed, 1 deletion(-) diff --git a/api/server.go b/api/server.go index 65fed677..26e1a473 100644 --- a/api/server.go +++ b/api/server.go @@ -103,7 +103,6 @@ func NewApiServer(config Config) *ApiServer { app.Use(fiberzap.New(fiberzap.Config{ Logger: logger, - // Define custom fields to add to the logs FieldsFunc: func(c *fiber.Ctx) []zap.Field { fields := []zap.Field{}