From d72b7689b175c8ec28f2b9bcf2209367a3074526 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Sun, 30 Nov 2025 22:40:43 +0000 Subject: [PATCH] feat: integrate structured logging and request ID middleware in main application --- backend/cmd/api/main.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/backend/cmd/api/main.go b/backend/cmd/api/main.go index 374f1b69..f72b492f 100644 --- a/backend/cmd/api/main.go +++ b/backend/cmd/api/main.go @@ -9,6 +9,8 @@ import ( "github.com/Wikid82/charon/backend/internal/api/handlers" "github.com/Wikid82/charon/backend/internal/api/routes" + "github.com/Wikid82/charon/backend/internal/api/middleware" + "github.com/Wikid82/charon/backend/internal/logger" "github.com/Wikid82/charon/backend/internal/config" "github.com/Wikid82/charon/backend/internal/database" "github.com/Wikid82/charon/backend/internal/models" @@ -99,6 +101,14 @@ func main() { } router := server.NewRouter(cfg.FrontendDir) + // Initialize structured logger with same writer as stdlib log so both capture logs + logger.Init(cfg.Debug, mw) + // Request ID middleware must run before recovery so the recover logs include the request id + router.Use(middleware.RequestID()) + // Log requests with request-scoped logger + router.Use(middleware.RequestLogger()) + // Attach a recovery middleware that logs stack traces when debug is enabled + router.Use(middleware.Recovery(cfg.Debug)) // Pass config to routes for auth service and certificate service if err := routes.Register(router, db, cfg); err != nil { @@ -114,7 +124,7 @@ func main() { } addr := fmt.Sprintf(":%s", cfg.HTTPPort) - log.Printf("starting %s backend on %s", version.Name, addr) + logger.Log().Infof("starting %s backend on %s", version.Name, addr) if err := router.Run(addr); err != nil { log.Fatalf("server error: %v", err)