39 lines
886 B
Go
39 lines
886 B
Go
package logger
|
|
|
|
import (
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
type Config struct {
|
|
AppName string `envconfig:"APP_NAME" required:"true"`
|
|
AppVersion string `envconfig:"APP_VERSION" required:"true"`
|
|
Level string `default:"error" envconfig:"LOGGER_LEVEL"`
|
|
PrettyConsole bool `default:"false" envconfig:"LOGGER_PRETTY_CONSOLE"`
|
|
}
|
|
|
|
func Init(c Config) {
|
|
zerolog.TimeFieldFormat = time.RFC3339
|
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
|
|
|
level, err := zerolog.ParseLevel(c.Level)
|
|
if err != nil {
|
|
zerolog.SetGlobalLevel(level)
|
|
}
|
|
|
|
log.Logger = log.With().
|
|
// Caller().
|
|
// Str("app_name", c.AppName).
|
|
// Str("app_version", c.AppVersion).
|
|
Logger()
|
|
|
|
if c.PrettyConsole {
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: "15:04:05"})
|
|
}
|
|
|
|
log.Info().Msg("Logger initialized")
|
|
}
|