From 5dfd71bfe1c0e25da413f00256a302b13c88d26d Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 2 Oct 2025 21:30:34 +0200 Subject: perf(backend): generate content during load --- backend/router.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'backend/router.go') diff --git a/backend/router.go b/backend/router.go index 374e28b..33c685d 100644 --- a/backend/router.go +++ b/backend/router.go @@ -20,28 +20,38 @@ const Version = "0.1.0" //go:embed templates var templates embed.FS -func NewRouter(debug bool, cfg *Config) *chi.Mux { +func SetupLogger(debug bool) { logFormat := httplog.SchemaECS.Concise(!debug) + logLevel := slog.LevelWarn + if debug { + logLevel = slog.LevelDebug + } + logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ ReplaceAttr: logFormat.ReplaceAttr, + Level: logLevel, })).With( slog.String("app", "anhgelus/small-web"), slog.String("version", Version), ) + slog.SetDefault(logger) +} + +func NewRouter(debug bool, cfg *Config) *chi.Mux { + r := chi.NewRouter() + logLevel := slog.LevelWarn if debug { logLevel = slog.LevelDebug } - r := chi.NewRouter() - r.Use(middleware.Timeout(30 * time.Second)) - r.Use(httplog.RequestLogger(logger, &httplog.Options{ + r.Use(httplog.RequestLogger(slog.Default(), &httplog.Options{ Level: logLevel, // Set log output to Elastic Common Schema (ECS) format. - Schema: logFormat, + Schema: httplog.SchemaECS.Concise(!debug), RecoverPanics: true, Skip: func(req *http.Request, respStatus int) bool { return respStatus == http.StatusNotFound || respStatus == http.StatusMethodNotAllowed -- cgit v1.2.3