package logger import ( "os" "git.linuxforward.com/byom/byom-golang-lib/pkg/config" "git.linuxforward.com/byom/byom-golang-lib/pkg/errors" "github.com/sirupsen/logrus" ) func NewLogger(config *config.Log) (*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, 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 }