diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-15 11:20:24 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-15 11:20:24 +0900 |
| commit | a6b88139afc7c994ddb604757304d44214c00a90 (patch) | |
| tree | bf24da786c5fb292991fd1ad893522601ce98aa4 /backend/main.go | |
| parent | 96fad1a4e78c7209e5a0f3496e8b59d591fbe500 (diff) | |
| download | phperkaigi-2026-albatross-a6b88139afc7c994ddb604757304d44214c00a90.tar.gz phperkaigi-2026-albatross-a6b88139afc7c994ddb604757304d44214c00a90.tar.zst phperkaigi-2026-albatross-a6b88139afc7c994ddb604757304d44214c00a90.zip | |
refactor(log): migrate from log to log/slog for structured logging
Replace all usages of the standard log package with log/slog across
backend and swift worker. Configure Echo's request logger to emit
structured log attributes via slog instead of the default format.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'backend/main.go')
| -rw-r--r-- | backend/main.go | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/backend/main.go b/backend/main.go index c1b670a..ac996f0 100644 --- a/backend/main.go +++ b/backend/main.go @@ -3,8 +3,9 @@ package main import ( "context" "fmt" - "log" + "log/slog" "net/http" + "os" "time" "github.com/jackc/pgx/v5/pgxpool" @@ -39,12 +40,14 @@ func main() { var err error conf, err := config.NewConfigFromEnv() if err != nil { - log.Fatalf("Error loading env %v", err) + slog.Error("failed to load env", "error", err) + os.Exit(1) } openAPISpec, err := api.GetSwaggerWithPrefix(conf.BasePath + "api") if err != nil { - log.Fatalf("Error loading OpenAPI spec\n: %s", err) + slog.Error("failed to load OpenAPI spec", "error", err) + os.Exit(1) } ctx := context.Background() @@ -52,7 +55,8 @@ func main() { dbDSN := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", conf.DBHost, conf.DBPort, conf.DBUser, conf.DBPassword, conf.DBName) connPool, err := connectDB(ctx, dbDSN) if err != nil { - log.Fatalf("Error connecting to db %v", err) + slog.Error("failed to connect to db", "error", err) + os.Exit(1) } defer connPool.Close() @@ -61,7 +65,27 @@ func main() { e := echo.New() e.Renderer = admin.NewRenderer() - e.Use(middleware.RequestLogger()) + e.Use(middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{ + LogStatus: true, + LogURI: true, + LogMethod: true, + LogLatency: true, + LogError: true, + HandleError: true, + LogValuesFunc: func(_ echo.Context, v middleware.RequestLoggerValues) error { + attrs := []slog.Attr{ + slog.String("method", v.Method), + slog.String("uri", v.URI), + slog.Int("status", v.Status), + slog.Duration("latency", v.Latency), + } + if v.Error != nil { + attrs = append(attrs, slog.String("error", v.Error.Error())) + } + slog.LogAttrs(context.Background(), slog.LevelInfo, "request", attrs...) + return nil + }, + })) e.Use(middleware.Recover()) taskQueue := taskqueue.NewQueue("task-db:6379") @@ -116,7 +140,7 @@ func main() { return case <-ticker.C: if err := queries.DeleteExpiredSessions(sessionCleanupCtx); err != nil { - log.Printf("failed to delete expired sessions: %v", err) + slog.Error("failed to delete expired sessions", "error", err) } } } @@ -125,6 +149,7 @@ func main() { go gameHub.Run() if err := e.Start(":80"); err != http.ErrServerClosed { - log.Fatal(err) + slog.Error("failed to start server", "error", err) + os.Exit(1) } } |
