log.go 883 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package logger
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. logrus "github.com/sirupsen/logrus"
  7. "github.com/imgproxy/imgproxy/v3/config/configurators"
  8. )
  9. func Init() error {
  10. log.SetOutput(os.Stdout)
  11. logFormat := "pretty"
  12. logLevel := "info"
  13. configurators.String(&logFormat, "IMGPROXY_LOG_FORMAT")
  14. configurators.String(&logLevel, "IMGPROXY_LOG_LEVEL")
  15. switch logFormat {
  16. case "structured":
  17. logrus.SetFormatter(&structuredFormatter{})
  18. case "json":
  19. logrus.SetFormatter(&logrus.JSONFormatter{})
  20. default:
  21. logrus.SetFormatter(newPrettyFormatter())
  22. }
  23. levelLogLevel, err := logrus.ParseLevel(logLevel)
  24. if err != nil {
  25. levelLogLevel = logrus.InfoLevel
  26. }
  27. logrus.SetLevel(levelLogLevel)
  28. if isSyslogEnabled() {
  29. slHook, err := newSyslogHook()
  30. if err != nil {
  31. return fmt.Errorf("Unable to connect to syslog daemon: %s", err)
  32. }
  33. logrus.AddHook(slHook)
  34. }
  35. return nil
  36. }