package logger import ( "os" "git.linuxforward.com/byom/byom-golang-lib/pkg/errors" "github.com/sirupsen/logrus" ) type LogConfig struct { Level string Formatter string // "json" or "text" } func NewLogger(config LogConfig) (*logrus.Logger, error) { logger := logrus.New() // Set output logger.SetOutput(os.Stdout) // Validate and set formatter switch config.Formatter { 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, errors.NewConfigError("logger.formatter", errors.ErrInvalidInput) } // 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, errors.NewConfigError("logger.level", err) } logger.SetLevel(level) } return logger, nil }