logrus.go 965 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package logger
  2. import (
  3. "os"
  4. "git.linuxforward.com/byom/byom-golang-lib/pkg/errors"
  5. "github.com/sirupsen/logrus"
  6. )
  7. func NewLogger(config *Config) (*logrus.Logger, error) {
  8. logger := logrus.New()
  9. // Set output
  10. logger.SetOutput(os.Stdout)
  11. // Validate and set formatter
  12. switch config.Format {
  13. case "json":
  14. logger.SetFormatter(&logrus.JSONFormatter{})
  15. case "text":
  16. logger.SetFormatter(&logrus.TextFormatter{
  17. FullTimestamp: true,
  18. })
  19. case "":
  20. // Default to text formatter
  21. logger.SetFormatter(&logrus.TextFormatter{
  22. FullTimestamp: true,
  23. })
  24. default:
  25. return nil, errors.NewConfigError("logger.formatter", errors.ErrInvalidInput)
  26. }
  27. // Validate and set level
  28. if config.Level == "" {
  29. // Default to info level
  30. logger.SetLevel(logrus.InfoLevel)
  31. } else {
  32. level, err := logrus.ParseLevel(config.Level)
  33. if err != nil {
  34. return nil, errors.NewConfigError("logger.level", err)
  35. }
  36. logger.SetLevel(level)
  37. }
  38. return logger, nil
  39. }