From c99095eba6d8877c03cc643c48b51f5912206572 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Wed, 20 Jul 2022 18:12:26 +0200 Subject: [PATCH] Print panic stacktrace directly if LOG_DEBUG is enabled --- pkg/api/server/middleware.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/pkg/api/server/middleware.go b/pkg/api/server/middleware.go index 7c70ba79c..9ae1eda0d 100644 --- a/pkg/api/server/middleware.go +++ b/pkg/api/server/middleware.go @@ -2,6 +2,7 @@ package server import ( "context" + "fmt" "net/http" "os" "runtime/debug" @@ -34,14 +35,22 @@ func sentryMiddleware() func(http.Handler) http.Handler { func panicRecovery(ctx context.Context, w http.ResponseWriter) { if err := recover(); err != nil { - log := logger.ContextValue(ctx) - if err, ok := err.(error); ok { - log = log.With(zap.Error(err)) - } else { - log = log.With(zap.Any("recover-value", err)) - } - log.Debug("crashed on http request", zap.ByteString("stack", debug.Stack())) + if _, has := os.LookupEnv("LOG_DEBUG"); has { + println("================================================================================") + fmt.Printf("%v\n", err) + println("--------------------------------------------------------------------------------") + debug.PrintStack() + println("================================================================================") + } else { + log := logger.ContextValue(ctx) + if err, ok := err.(error); ok { + log = log.With(zap.Error(err)) + } else { + log = log.With(zap.Any("recover-value", err)) + } + log.Debug("crashed on http request", zap.ByteString("stack", debug.Stack())) + } w.WriteHeader(500)