logger.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Package logger provides logging capabilities.
  2. package logger
  3. import "github.com/hashicorp/go-hclog"
  4. var (
  5. logger Logger
  6. )
  7. func init() {
  8. DisableLogger()
  9. }
  10. // Logger interface
  11. type Logger interface {
  12. // LogWithKeyVals logs at the specified level for the specified sender adding the specified key vals
  13. LogWithKeyVals(level hclog.Level, sender, msg string, args ...interface{})
  14. // Log logs at the specified level for the specified sender
  15. Log(level hclog.Level, sender, format string, v ...interface{})
  16. }
  17. // SetLogger sets the specified logger
  18. func SetLogger(l Logger) {
  19. logger = l
  20. }
  21. // DisableLogger disables logging
  22. func DisableLogger() {
  23. logger = &noLogger{}
  24. }
  25. type noLogger struct{}
  26. func (*noLogger) LogWithKeyVals(level hclog.Level, sender, msg string, args ...interface{}) {}
  27. func (*noLogger) Log(level hclog.Level, sender, format string, v ...interface{}) {}
  28. // Debug logs at debug level for the specified sender
  29. func Debug(sender, format string, v ...interface{}) {
  30. logger.Log(hclog.Debug, sender, format, v...)
  31. }
  32. // Info logs at info level for the specified sender
  33. func Info(sender, format string, v ...interface{}) {
  34. logger.Log(hclog.Info, sender, format, v...)
  35. }
  36. // Warn logs at warn level for the specified sender
  37. func Warn(sender, format string, v ...interface{}) {
  38. logger.Log(hclog.Warn, sender, format, v...)
  39. }
  40. // Error logs at error level for the specified sender
  41. func Error(sender, format string, v ...interface{}) {
  42. logger.Log(hclog.Error, sender, format, v...)
  43. }