package logger import ( "os" "github.com/sirupsen/logrus" ) func NewLogger(config *Config) (*logrus.Logger, error) { logger := logrus.New() // Set output logger.SetOutput(os.Stdout) // Validate and set formatter switch config.Format { case "json": logger.SetFormatter(&logrus.JSONFormatter{}) case "text": logger.SetFormatter(&logrus.TextFormatter{ FullTimestamp: true, }) case "": // Default to text formatter logger.SetFormatter(&logrus.TextFormatter{ FullTimestamp: true, }) default: return nil, NewConfigError( "configure", "format", config.Format, ErrInvalidFormat, "supported formats are 'json' and 'text'", ) } // Validate and set level if config.Level == "" { // Default to info level logger.SetLevel(logrus.InfoLevel) } else { level, err := logrus.ParseLevel(config.Level) if err != nil { return nil, NewConfigError( "configure", "level", config.Level, ErrInvalidLevel, err.Error(), ) } logger.SetLevel(level) } return logger, nil }