logger.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package nebula
  2. import (
  3. "fmt"
  4. "strings"
  5. "time"
  6. "github.com/sirupsen/logrus"
  7. "github.com/slackhq/nebula/config"
  8. )
  9. func configLogger(l *logrus.Logger, c *config.C) error {
  10. // set up our logging level
  11. logLevel, err := logrus.ParseLevel(strings.ToLower(c.GetString("logging.level", "info")))
  12. if err != nil {
  13. return fmt.Errorf("%s; possible levels: %s", err, logrus.AllLevels)
  14. }
  15. l.SetLevel(logLevel)
  16. disableTimestamp := c.GetBool("logging.disable_timestamp", false)
  17. timestampFormat := c.GetString("logging.timestamp_format", "")
  18. fullTimestamp := (timestampFormat != "")
  19. if timestampFormat == "" {
  20. timestampFormat = time.RFC3339
  21. }
  22. logFormat := strings.ToLower(c.GetString("logging.format", "text"))
  23. switch logFormat {
  24. case "text":
  25. l.Formatter = &logrus.TextFormatter{
  26. TimestampFormat: timestampFormat,
  27. FullTimestamp: fullTimestamp,
  28. DisableTimestamp: disableTimestamp,
  29. }
  30. case "json":
  31. l.Formatter = &logrus.JSONFormatter{
  32. TimestampFormat: timestampFormat,
  33. DisableTimestamp: disableTimestamp,
  34. }
  35. default:
  36. return fmt.Errorf("unknown log format `%s`. possible formats: %s", logFormat, []string{"text", "json"})
  37. }
  38. return nil
  39. }