package logger import ( "gerald/internal/adapters/config" "os" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/pkgerrors" ) func NewLogger(config *config.Config) zerolog.Logger { level, err := zerolog.ParseLevel(config.LoggingLevel) if err != nil { panic(err) } //zerolog global settings zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack zerolog.LevelFieldName = "lvl" zerolog.MessageFieldName = "msg" zerolog.DurationFieldUnit = time.Millisecond zerolog.DurationFieldInteger = true //zerolog output settings output := zerolog.ConsoleWriter{ Out: os.Stderr, NoColor: false, TimeFormat: time.Stamp, PartsOrder: []string{ zerolog.TimestampFieldName, zerolog.LevelFieldName, zerolog.MessageFieldName, zerolog.CallerFieldName, }, } //create adapted logger with output settings return zerolog.New(output).Level(level).With().Timestamp().Logger() }