package common import ( "fmt" "github.com/rs/zerolog" "os" "strings" ) func NewLogger(prefix string, level string, output *os.File) zerolog.Logger { writer := zerolog.ConsoleWriter{ Out: output, TimeFormat: "2006-01-02 15:04:05", NoColor: false, // Set to true if you don't want colors FormatLevel: func(i interface{}) string { return strings.ToUpper(fmt.Sprintf("| %-6s|", i)) }, FormatMessage: func(i interface{}) string { return fmt.Sprintf("[%s] %v", prefix, i) }, } logger := zerolog.New(writer). With(). Timestamp(). Logger(). Level(zerolog.InfoLevel) // Set the log level switch level { case "debug": logger = logger.Level(zerolog.DebugLevel) case "info": logger = logger.Level(zerolog.InfoLevel) case "warn": logger = logger.Level(zerolog.WarnLevel) case "error": logger = logger.Level(zerolog.ErrorLevel) } return logger }