github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/logger/logger.go (about)

     1  package logger
     2  
     3  import (
     4  	"github.com/evalphobia/logrus_sentry"
     5  	"github.com/unicornultrafoundation/go-u2u/log"
     6  )
     7  
     8  // init with defaults.
     9  func init() {
    10  	log.Root().SetHandler(
    11  		log.CallerStackHandler("%v", log.StdoutHandler))
    12  }
    13  
    14  // SetDSN appends sentry hook to log root handler.
    15  func SetDSN(value string) {
    16  	// If DSN is empty, we don't create new hook.
    17  	// Otherwise we'll the same error message for each new log.
    18  	if value == "" {
    19  		log.Warn("Sentry client DSN is empty")
    20  		return
    21  	}
    22  
    23  	// TODO: find or make sentry log.Handler without logrus.
    24  	sentry, err := logrus_sentry.NewSentryHook(value, nil)
    25  	if err != nil {
    26  		log.Warn("Probably Sentry host is not running", "err", err)
    27  		return
    28  	}
    29  
    30  	log.Root().SetHandler(
    31  		log.MultiHandler(
    32  			log.Root().GetHandler(),
    33  			LogrusHandler(sentry),
    34  		))
    35  }
    36  
    37  // SetLevel sets level filter on log root handler.
    38  // So it should be called last.
    39  func SetLevel(l string) {
    40  	lvl, err := log.LvlFromString(l)
    41  	if err != nil {
    42  		panic(err)
    43  	}
    44  
    45  	log.Root().SetHandler(
    46  		log.LvlFilterHandler(
    47  			lvl,
    48  			log.Root().GetHandler()))
    49  }