From 5a39d6a37c10e2701a4bf458fc3bb7df157183ee Mon Sep 17 00:00:00 2001 From: Daan Sprenkels Date: Sat, 30 May 2020 17:36:18 +0200 Subject: [PATCH] Add request logging to panic recovery Fixes #61 --- router.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/router.go b/router.go index 8a89a43..e4e6098 100644 --- a/router.go +++ b/router.go @@ -30,11 +30,15 @@ func (rl *rushlink) RootURL() *url.URL { func (rl *rushlink) recoveryMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + logRequestInfo := func() { + log.Printf("in request: %v - %v %q %v", r.RemoteAddr, r.Method, r.RequestURI, r.Proto) + } defer func() { defer func() { if err := recover(); err != nil { w.WriteHeader(500) log.Printf("error: panic while recovering from another panic: %v\n", err) + logRequestInfo() debug.PrintStack() fmt.Fprintf(w, "internal server error: %v\n", err) } @@ -43,6 +47,7 @@ func (rl *rushlink) recoveryMiddleware(next http.Handler) http.Handler { if err := recover(); err != nil { w.WriteHeader(500) log.Printf("error: %v\n", err) + logRequestInfo() debug.PrintStack() rl.renderInternalServerError(w, r, err) }