From 8896188ec40fee2bbf8cd251518fbcfade66a761 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 17 Dec 2025 14:31:35 +0200 Subject: [PATCH] add sending of additional information to disk during a panic, changed the name of the called routing method --- cmd/serve.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/cmd/serve.go b/cmd/serve.go index 2932017..e243837 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -7,6 +7,7 @@ import ( "os" "os/signal" "path/filepath" + "runtime/debug" "syscall" "git.oblat.lv/alex/triggerssmith/api" @@ -81,7 +82,20 @@ var serveCmd = &cobra.Command{ } defer func() { if r := recover(); r != nil { - slog.Error("Application panicked", slog.Any("error", r)) + stack := debug.Stack() + + f, err := os.OpenFile("panic.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + slog.Error("Failed to open panic.log", slog.Any("error", err)) + } else { + defer f.Close() + f.WriteString(fmt.Sprintf("Panic: %v\n", r)) + f.Write(stack) + f.WriteString("\n\n") + } + + slog.Error("Application panicked: the stack is flushed to disk", slog.Any("error", r)) + os.Exit(-1) } }() @@ -130,7 +144,7 @@ var serveCmd = &cobra.Command{ router := api.NewRouter(cfg) - srv.SetHandler(router.RouteHandler()) + srv.SetHandler(router.MustRoute()) srv.Init() var addr = net.JoinHostPort(cfg.Server.Addr, fmt.Sprintf("%d", cfg.Server.Port))