log.go 1.0 KB

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