| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | package middlewareimport (	sentry2 "gitee.com/xuyiping_admin/pkg/sentry"	"gitee.com/xuyiping_admin/pkg/xerr"	"sync"	"github.com/getsentry/sentry-go"	sentrygin "github.com/getsentry/sentry-go/gin"	"github.com/gin-gonic/gin")var sentryInitOnce sync.Once// ReportToSentry report error to sentryhubfunc ReportToSentry(dsn string, options ...*sentry.ClientOptions) []gin.HandlerFunc {	sentryInitOnce.Do(func() {		sentry2.MustInit(dsn, options...)	})	return []gin.HandlerFunc{		sentrygin.New(sentrygin.Options{Repanic: true}),		CaptureError,	}}func CaptureError(c *gin.Context) {	defer func() {		if len(c.Errors) > 0 {			if sentryHub := sentrygin.GetHubFromContext(c); sentryHub != nil {				sentryHub.WithScope(func(scope *sentry.Scope) {					for _, e := range c.Errors {						if _, isCustom := xerr.IsCustomError(e); isCustom {							continue						}						_ = sentryHub.CaptureException(e.Err)					}				})			}			return		}	}()	c.Next()}
 |