Panic: Add Handler
Signed-off-by: xiekeyang <xiekeyang@huawei.com>
This commit is contained in:
parent
cd7d977fe6
commit
aa73c53690
@ -62,6 +62,7 @@ func main() {
|
|||||||
|
|
||||||
app := handlers.NewApp(ctx, *config)
|
app := handlers.NewApp(ctx, *config)
|
||||||
handler := configureReporting(app)
|
handler := configureReporting(app)
|
||||||
|
handler = panicHandler(handler)
|
||||||
handler = gorhandlers.CombinedLoggingHandler(os.Stdout, handler)
|
handler = gorhandlers.CombinedLoggingHandler(os.Stdout, handler)
|
||||||
|
|
||||||
if config.HTTP.Debug.Addr != "" {
|
if config.HTTP.Debug.Addr != "" {
|
||||||
@ -273,3 +274,17 @@ func debugServer(addr string) {
|
|||||||
log.Fatalf("error listening on debug interface: %v", err)
|
log.Fatalf("error listening on debug interface: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// panicHandler add a HTTP handler to web app. The handler recover the happening
|
||||||
|
// panic. logrus.Panic transmits panic message to pre-config log hooks, which is
|
||||||
|
// defined in config.yml.
|
||||||
|
func panicHandler(handler http.Handler) http.Handler {
|
||||||
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
defer func() {
|
||||||
|
if err := recover(); err != nil {
|
||||||
|
log.Panic(fmt.Sprintf("%v", err))
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
handler.ServeHTTP(w, r)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user