package logger import ( "io" "log" "os" c "scripts/internal/config" "github.com/rs/zerolog" ) const timeFormat = "2006-01-02 15:04:05" var Log zerolog.Logger func MustInit() { writers := make([]io.Writer, 0, 2) zerolog.TimeFieldFormat = timeFormat consoleWriter := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: timeFormat} writers = append(writers, consoleWriter) if c.Conf.LogSettings.EnableFile { logFile, err := os.OpenFile(c.Conf.LogSettings.FileLocation, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { log.Fatal(err) } writers = append(writers, logFile) } multi := zerolog.MultiLevelWriter(writers...) zCtx := zerolog.New(multi).Level(detectedLogLevel(c.Conf.LogSettings.ConsoleLevel)).With().Timestamp() if c.Conf.LogSettings.EnableCaller { zCtx = zCtx.Caller() } Log = zCtx.Logger() } func detectedLogLevel(level string) zerolog.Level { switch level { case "TRACE": return zerolog.TraceLevel case "DEBUG": return zerolog.DebugLevel case "WARN": return zerolog.WarnLevel case "INFO": return zerolog.InfoLevel default: return zerolog.InfoLevel } }