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  }