From 5bf5c47a44b4cea3afc9b80fdaf13cc2637657ac Mon Sep 17 00:00:00 2001 From: Gabor Javorszky Date: Wed, 22 Feb 2023 16:32:59 +0000 Subject: [PATCH 1/4] Add indirection to setting log level from env vars --- go.mod | 1 + go.sum | 2 ++ loglevel/loglevel.go | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 loglevel/loglevel.go diff --git a/go.mod b/go.mod index 80d3fcd..ba0bf10 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/labstack/echo/v4 v4.10.2 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.29.0 + github.com/sethvargo/go-envconfig v0.9.0 github.com/stretchr/testify v1.8.1 go.opentelemetry.io/otel v1.13.0 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.36.0 diff --git a/go.sum b/go.sum index f4953fe..f4f091a 100644 --- a/go.sum +++ b/go.sum @@ -169,6 +169,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/sethvargo/go-envconfig v0.9.0 h1:Q6FQ6hVEeTECULvkJZakq3dZMeBQ3JUpcKMfPQbKMDE= +github.com/sethvargo/go-envconfig v0.9.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= diff --git a/loglevel/loglevel.go b/loglevel/loglevel.go new file mode 100644 index 0000000..9319a78 --- /dev/null +++ b/loglevel/loglevel.go @@ -0,0 +1,39 @@ +package loglevel + +import ( + "context" + + "github.com/rs/zerolog" + + "github.com/sethvargo/go-envconfig" +) + +type Config struct { + Debug bool `env:"DEBUG,default=false"` +} + +func SetGlobal() { + var c Config + if err := envconfig.Process(context.Background(), &c); err != nil { + // do nothing, leave it at the default "not debug, therefore info+" + } + + zerolog.SetGlobalLevel(zerolog.InfoLevel) + if c.Debug { + zerolog.SetGlobalLevel(zerolog.DebugLevel) + } +} + +func SetLoggerLevel(l zerolog.Logger) zerolog.Logger { + lvl := zerolog.InfoLevel + var c Config + if err := envconfig.Process(context.Background(), &c); err != nil { + // do nothing, leave it at the default "not debug, therefore info+" + } + + if c.Debug { + lvl = zerolog.DebugLevel + } + + return l.Level(lvl) +} From 221a712a8d1451cd913acab89953830e01edeb75 Mon Sep 17 00:00:00 2001 From: Gabor Javorszky Date: Wed, 22 Feb 2023 16:46:37 +0000 Subject: [PATCH 2/4] Add default log level functions --- loglevel/loglevel.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/loglevel/loglevel.go b/loglevel/loglevel.go index 9319a78..bc57eb0 100644 --- a/loglevel/loglevel.go +++ b/loglevel/loglevel.go @@ -37,3 +37,26 @@ func SetLoggerLevel(l zerolog.Logger) zerolog.Logger { return l.Level(lvl) } + +func FromEnv(prefix string) zerolog.Level { + return FromLookuper(prefix, envconfig.OsLookuper()) +} + +func FromLookuper(prefix string, l envconfig.Lookuper) zerolog.Level { + l = envconfig.PrefixLookuper(prefix, l) + c := getC(l) + + if c.Debug { + return zerolog.DebugLevel + } + + return zerolog.InfoLevel +} + +func getC(l envconfig.Lookuper) Config { + var c Config + if err := envconfig.ProcessWith(context.Background(), &c, l); err != nil { + // do nothing + } + return c +} From 38350bd8c009888df3171dadf8c6aa90e45caf6d Mon Sep 17 00:00:00 2001 From: Gabor Javorszky Date: Wed, 22 Feb 2023 17:12:03 +0000 Subject: [PATCH 3/4] Add baseline logger --- loglevel/loglevel.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/loglevel/loglevel.go b/loglevel/loglevel.go index bc57eb0..6e6b958 100644 --- a/loglevel/loglevel.go +++ b/loglevel/loglevel.go @@ -2,6 +2,7 @@ package loglevel import ( "context" + "os" "github.com/rs/zerolog" @@ -60,3 +61,11 @@ func getC(l envconfig.Lookuper) Config { } return c } + +func Baseline(prefix string) zerolog.Logger { + zerolog.TimeFieldFormat = zerolog.TimeFormatUnix + return zerolog.New(os.Stderr).With(). + Timestamp(). + Logger(). + Level(FromEnv(prefix)) +} From b4b57ce7cce3b9fc2c14454cfe2104b016c31a65 Mon Sep 17 00:00:00 2001 From: Gabor Javorszky Date: Wed, 22 Feb 2023 17:21:37 +0000 Subject: [PATCH 4/4] Fix lint errors --- loglevel/loglevel.go | 1 - 1 file changed, 1 deletion(-) diff --git a/loglevel/loglevel.go b/loglevel/loglevel.go index 6e6b958..a6725fc 100644 --- a/loglevel/loglevel.go +++ b/loglevel/loglevel.go @@ -5,7 +5,6 @@ import ( "os" "github.com/rs/zerolog" - "github.com/sethvargo/go-envconfig" )