github.com/vseinstrumentiru/lego@v1.0.2/internal/lego/monitor/errorhandler/provider.go (about) 1 package errorhandler 2 3 import ( 4 "emperror.dev/emperror" 5 "emperror.dev/errors" 6 logurhandler "emperror.dev/handler/logur" 7 lego2 "github.com/vseinstrumentiru/lego/internal/lego" 8 "github.com/vseinstrumentiru/lego/internal/lego/monitor/errorhandler/sentryprovider" 9 "logur.dev/logur" 10 ) 11 12 func Provide(p lego2.Process, config Config, logger logur.LoggerFacade) emperror.ErrorHandlerFacade { 13 handlers := emperror.ErrorHandlers{} 14 15 if len(config.Providers) == 0 { 16 config.Providers = append(config.Providers, LogProvider) 17 } 18 19 for _, t := range config.Providers { 20 switch t { 21 case LogProvider: 22 handlers = append(handlers, logurhandler.New(logger)) 23 case SentryProvider: 24 provider, err := sentryprovider.New(p, config.Sentry.DSN) 25 emperror.Panic(errors.Wrap(err, "can't load sentry error handler")) 26 handlers = append(handlers, provider) 27 } 28 } 29 30 return handlers 31 }