From 3aae9e31c3a7ab9cf04ede090ce322966d99c772 Mon Sep 17 00:00:00 2001 From: Tareq Al-Maamari Date: Thu, 21 Apr 2022 21:38:31 +0200 Subject: [PATCH] Introduce log level and format config (#138) --- config.go | 23 +++++++++++++++++++++++ example.conf | 10 ++++++++++ 2 files changed, 33 insertions(+) diff --git a/config.go b/config.go index 7e3512b9..3a4303fc 100644 --- a/config.go +++ b/config.go @@ -247,6 +247,8 @@ func (d *DaemonConfig) ServerTLS() *tls.Config { func SetupDaemonConfig(logger *logrus.Logger, configFile string) (DaemonConfig, error) { log := logrus.NewEntry(logger) var conf DaemonConfig + var logLevel string + var logFormat string var advAddr, advPort string var err error @@ -257,10 +259,31 @@ func SetupDaemonConfig(logger *logrus.Logger, configFile string) (DaemonConfig, } } + // Log config + setter.SetDefault(&logFormat, os.Getenv("GUBER_LOG_FORMAT")) + if logFormat != "" { + switch logFormat { + case "json": + logger.SetFormatter(&logrus.JSONFormatter{}) + case "text": + logger.SetFormatter(&logrus.TextFormatter{}) + default: + return conf, errors.New("GUBER_LOG_FORMAT is invalid; expected value is either json or text") + } + } + setter.SetDefault(&DebugEnabled, getEnvBool(log, "GUBER_DEBUG")) + setter.SetDefault(&logLevel, os.Getenv("GUBER_LOG_LEVEL")) if DebugEnabled { logger.SetLevel(logrus.DebugLevel) log.Debug("Debug enabled") + } else if logLevel != "" { + logrusLogLevel, err := logrus.ParseLevel(logLevel) + if err != nil { + return conf, errors.Wrap(err, "invalid log level") + } + + logger.SetLevel(logrusLogLevel) } // Main config diff --git a/example.conf b/example.conf index fcf968c8..2775df2b 100644 --- a/example.conf +++ b/example.conf @@ -37,6 +37,16 @@ GUBER_ADVERTISE_ADDRESS=localhost:9990 # See https://pkg.go.dev/github.com/prometheus/client_golang@v1.11.0/prometheus/collectors#NewGoCollector # GUBER_METRIC_FLAGS=os,golang +############################ +# Log Config +############################ + +# Log Level, these are the log levels for logrus. +# GUBER_LOG_LEVEL=trace + +# Log Format, currently supports either json or text +# GUBER_LOG_FORMAT=json + ############################ # Behavior Config