logrus.go 1.0 KB

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