diff --git a/go.mod b/go.mod index 193d3e4..9b04953 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,10 @@ require ( github.com/BurntSushi/toml v1.2.1 // indirect github.com/ilyakaznacheev/cleanenv v1.5.0 // indirect github.com/joho/godotenv v1.5.1 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/rs/zerolog v1.35.0 // indirect + golang.org/x/sys v0.29.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect olympos.io/encoding/edn v0.0.0-20201019073823-d3554ca0b0a3 // indirect ) diff --git a/go.sum b/go.sum index 020aae7..fc6972b 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,15 @@ github.com/ilyakaznacheev/cleanenv v1.5.0 h1:0VNZXggJE2OYdXE87bfSSwGxeiGt9moSR2l github.com/ilyakaznacheev/cleanenv v1.5.0/go.mod h1:a5aDzaJrLCQZsazHol1w8InnDcOX0OColm64SlIi6gk= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/rs/zerolog v1.35.0 h1:VD0ykx7HMiMJytqINBsKcbLS+BJ4WYjz+05us+LRTdI= +github.com/rs/zerolog v1.35.0/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/shared/cfg/config.go b/internal/shared/cfg/config.go index 47053f0..dfd9754 100644 --- a/internal/shared/cfg/config.go +++ b/internal/shared/cfg/config.go @@ -5,6 +5,7 @@ import ( "log" "github.com/ilyakaznacheev/cleanenv" + "github.com/rs/zerolog" ) type Config struct { @@ -40,3 +41,15 @@ func (c *Config) GetURLPostgres() string { c.DBPort, c.DBName) } + +func (c *Config) GetLogLevel() zerolog.Level { + level, err := zerolog.ParseLevel(c.LogLevel) + if err != nil { + return zerolog.InfoLevel + } + return level +} + +func (c *Config) GetMode() string { + return c.Mode +} diff --git a/internal/shared/log/init.go b/internal/shared/log/init.go new file mode 100644 index 0000000..f44fc6b --- /dev/null +++ b/internal/shared/log/init.go @@ -0,0 +1,27 @@ +package log + +import ( + "os" + "time" + + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" +) + +type cfgLogStore interface { + GetLogLevel() zerolog.Level + GetMode() string +} + +func Init(cfg cfgLogStore) { + zerolog.TimeFieldFormat = zerolog.TimeFormatUnix + + if cfg.GetMode() != "PROD" { + log.Logger = log.Output(zerolog.ConsoleWriter{ + Out: os.Stdout, + TimeFormat: time.Kitchen, + }) + } else { + zerolog.SetGlobalLevel(zerolog.InfoLevel) + } +}