package middleware import ( "errors" "fmt" "github.com/gin-gonic/gin" common "go_upload_sync/app/common/function" "go_upload_sync/util" "github.com/ichunt2019/cfg/lib" "runtime/debug" ) // RecoveryMiddleware捕获所有panic,并且返回错误信息 func RecoveryMiddleware() gin.HandlerFunc { return func(c *gin.Context) { //fmt.Println(lib.Instance("proxy").GetString("base.debug_mode")) defer func() { if err := recover(); err != nil { //先做一下日志记录 //fmt.Println(string(debug.Stack())) util.ComLogNotice(c, "_com_panic", map[string]interface{}{ "error": fmt.Sprint(err), "stack": string(debug.Stack()), }) if lib.Instance("proxy").GetString("base.debug_mode") != "debug" { //ResponseError(c, 500, errors.New("内部错误")) common.Output(c,500,"内部错误",nil) return } else { common.Output(c,500,"内部错误",errors.New(fmt.Sprint(err))) return } } }() c.Next() } }