logger.go 1.4 KB

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