logger.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package core
  2. import (
  3. "log"
  4. "os"
  5. )
  6. // ConfigLogger is the key for the pipeline's logger
  7. const ConfigLogger = "Core.Logger"
  8. // Logger defines the output interface used by Hercules components.
  9. type Logger interface {
  10. Info(...interface{})
  11. Infof(string, ...interface{})
  12. Warn(...interface{})
  13. Warnf(string, ...interface{})
  14. Error(...interface{})
  15. Errorf(string, ...interface{})
  16. }
  17. // DefaultLogger is the default logger used by a pipeline, and wraps the standard
  18. // log library.
  19. type DefaultLogger struct {
  20. I *log.Logger
  21. W *log.Logger
  22. E *log.Logger
  23. }
  24. // NewLogger returns a configured default logger.
  25. func NewLogger() *DefaultLogger {
  26. return &DefaultLogger{
  27. I: log.New(os.Stdout, "[INFO] ", log.LstdFlags),
  28. W: log.New(os.Stdout, "[WARN] ", log.LstdFlags),
  29. E: log.New(os.Stderr, "[ERROR] ", log.LstdFlags),
  30. }
  31. }
  32. // Info writes to info logger
  33. func (d *DefaultLogger) Info(v ...interface{}) { d.I.Print(v...) }
  34. // Infof writes to info logger
  35. func (d *DefaultLogger) Infof(f string, v ...interface{}) { d.I.Printf(f, v...) }
  36. // Warn writes to the warning logger
  37. func (d *DefaultLogger) Warn(v ...interface{}) { d.W.Print(v...) }
  38. // Warnf writes to the warning logger
  39. func (d *DefaultLogger) Warnf(f string, v ...interface{}) { d.W.Printf(f, v...) }
  40. // Error writes to the error logger
  41. func (d *DefaultLogger) Error(v ...interface{}) { d.E.Print(v...) }
  42. // Errorf writes to the error logger
  43. func (d *DefaultLogger) Errorf(f string, v ...interface{}) { d.E.Printf(f, v...) }