From b8197657fba8056c48c53332c7bbe27b3a53958f Mon Sep 17 00:00:00 2001 From: Eric Solender Date: Sun, 22 Nov 2020 13:58:44 -0500 Subject: [PATCH] added customizable log level --- config.go | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/config.go b/config.go index 0fea954..e5ad34d 100644 --- a/config.go +++ b/config.go @@ -30,29 +30,17 @@ import ( "strings" ) -var externalLog *logrus.Entry var neoVersion float64 -var log = getLogger() +var log logrus.FieldLogger -func getLogger() *logrus.Entry { - if externalLog == nil { - //create default logger - toReturn := logrus.New() - - return toReturn.WithField("source", "gogm") - } - - return externalLog +func init() { + makeDefaultLogger() } -// SetLogger sets logrus logger -func SetLogger(logger *logrus.Entry) error { - if logger == nil { - return errors.New("logger can not be nil") - } - externalLog = logger - return nil +func makeDefaultLogger() { + _log := logrus.New() + log = _log.WithField("error", "not initialized") } func getIsV4() bool { @@ -84,6 +72,10 @@ type Config struct { // Index Strategy defines the index strategy for GoGM IndexStrategy IndexStrategy `yaml:"index_strategy" json:"index_strategy" mapstructure:"index_strategy"` TargetDbs []string `yaml:"target_dbs" json:"target_dbs" mapstructure:"target_dbs"` + + Logger logrus.FieldLogger `yaml:"-" json:"-" mapstructure:"-"` + // if logger is not nil log level will be ignored + LogLevel string `json:"log_level" yaml:"log_level" mapstructure:"log_level"` } // ConnectionString builds the neo4j bolt/bolt+routing connection string @@ -157,6 +149,23 @@ func setupInit(isTest bool, conf *Config, mapTypes ...interface{}) error { } if conf != nil { + if conf.Logger != nil { + log = conf.Logger + } else { + _log := logrus.New() + + // set info if nothing has been set + if conf.LogLevel == "" { + conf.LogLevel = "INFO" + } + lvl, err := logrus.ParseLevel(conf.LogLevel) + if err != nil { + return err + } + _log.SetLevel(lvl) + log = _log + } + if conf.TargetDbs == nil || len(conf.TargetDbs) == 0 { conf.TargetDbs = []string{"neo4j"} }