log.go 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package anaconda
  2. import (
  3. "log"
  4. "os"
  5. )
  6. // The Logger interface provides optional logging ability for the streaming API.
  7. // It can also be used to log the rate limiting headers if desired.
  8. type Logger interface {
  9. Fatal(args ...interface{})
  10. Fatalf(format string, args ...interface{})
  11. Panic(args ...interface{})
  12. Panicf(format string, args ...interface{})
  13. // Log functions
  14. Critical(args ...interface{})
  15. Criticalf(format string, args ...interface{})
  16. Error(args ...interface{})
  17. Errorf(format string, args ...interface{})
  18. Warning(args ...interface{})
  19. Warningf(format string, args ...interface{})
  20. Notice(args ...interface{})
  21. Noticef(format string, args ...interface{})
  22. Info(args ...interface{})
  23. Infof(format string, args ...interface{})
  24. Debug(args ...interface{})
  25. Debugf(format string, args ...interface{})
  26. }
  27. // SetLogger sets the Logger used by the API client.
  28. // The default logger is silent. BasicLogger will log to STDERR
  29. // using the log package from the standard library.
  30. func (c *TwitterApi) SetLogger(l Logger) {
  31. c.Log = l
  32. }
  33. type silentLogger struct {
  34. }
  35. func (_ silentLogger) Fatal(_ ...interface{}) {}
  36. func (_ silentLogger) Fatalf(_ string, _ ...interface{}) {}
  37. func (_ silentLogger) Panic(_ ...interface{}) {}
  38. func (_ silentLogger) Panicf(_ string, _ ...interface{}) {}
  39. func (_ silentLogger) Critical(_ ...interface{}) {}
  40. func (_ silentLogger) Criticalf(_ string, _ ...interface{}) {}
  41. func (_ silentLogger) Error(_ ...interface{}) {}
  42. func (_ silentLogger) Errorf(_ string, _ ...interface{}) {}
  43. func (_ silentLogger) Warning(_ ...interface{}) {}
  44. func (_ silentLogger) Warningf(_ string, _ ...interface{}) {}
  45. func (_ silentLogger) Notice(_ ...interface{}) {}
  46. func (_ silentLogger) Noticef(_ string, _ ...interface{}) {}
  47. func (_ silentLogger) Info(_ ...interface{}) {}
  48. func (_ silentLogger) Infof(_ string, _ ...interface{}) {}
  49. func (_ silentLogger) Debug(_ ...interface{}) {}
  50. func (_ silentLogger) Debugf(format string, _ ...interface{}) {}
  51. // BasicLogger is the equivalent of using log from the standard
  52. // library to print to STDERR.
  53. var BasicLogger Logger
  54. type basicLogger struct {
  55. log *log.Logger //func New(out io.Writer, prefix string, flag int) *Logger
  56. }
  57. func init() {
  58. BasicLogger = &basicLogger{log: log.New(os.Stderr, log.Prefix(), log.LstdFlags)}
  59. }
  60. func (l basicLogger) Fatal(items ...interface{}) { l.log.Fatal(items...) }
  61. func (l basicLogger) Fatalf(s string, items ...interface{}) { l.log.Fatalf(s, items...) }
  62. func (l basicLogger) Panic(items ...interface{}) { l.log.Panic(items...) }
  63. func (l basicLogger) Panicf(s string, items ...interface{}) { l.log.Panicf(s, items...) }
  64. func (l basicLogger) Critical(items ...interface{}) { l.log.Print(items...) }
  65. func (l basicLogger) Criticalf(s string, items ...interface{}) { l.log.Printf(s, items...) }
  66. func (l basicLogger) Error(items ...interface{}) { l.log.Print(items...) }
  67. func (l basicLogger) Errorf(s string, items ...interface{}) { l.log.Printf(s, items...) }
  68. func (l basicLogger) Warning(items ...interface{}) { l.log.Print(items...) }
  69. func (l basicLogger) Warningf(s string, items ...interface{}) { l.log.Printf(s, items...) }
  70. func (l basicLogger) Notice(items ...interface{}) { l.log.Print(items...) }
  71. func (l basicLogger) Noticef(s string, items ...interface{}) { l.log.Printf(s, items...) }
  72. func (l basicLogger) Info(items ...interface{}) { l.log.Print(items...) }
  73. func (l basicLogger) Infof(s string, items ...interface{}) { l.log.Printf(s, items...) }
  74. func (l basicLogger) Debug(items ...interface{}) { l.log.Print(items...) }
  75. func (l basicLogger) Debugf(s string, items ...interface{}) { l.log.Printf(s, items...) }