1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-19 05:19:39 +02:00

fix(server): add panic logging middleware BE-11750 (#599)

This commit is contained in:
andres-portainer 2025-03-31 18:58:20 -03:00 committed by GitHub
parent 1d12011eb5
commit a0d36cf87a
2 changed files with 26 additions and 1 deletions

View file

@ -0,0 +1,25 @@
package middlewares
import (
"net/http"
"runtime/debug"
"github.com/rs/zerolog/log"
)
func WithPanicLogger(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
defer func() {
if err := recover(); err != nil {
log.Error().
Any("panic", err).
Str("method", req.Method).
Str("url", req.URL.String()).
Str("stack", string(debug.Stack())).
Msg("Panic in request handler")
}
}()
next.ServeHTTP(w, req)
})
}

View file

@ -335,7 +335,7 @@ func (server *Server) Start() error {
handler := adminMonitor.WithRedirect(offlineGate.WaitingMiddleware(time.Minute, server.Handler))
handler = middlewares.WithSlowRequestsLogger(handler)
handler = middlewares.WithPanicLogger(middlewares.WithSlowRequestsLogger(handler))
handler, err := csrf.WithProtect(handler)
if err != nil {