log.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package metrics
  2. import (
  3. "log"
  4. "time"
  5. )
  6. func Log(r Registry, interval int, l *log.Logger) {
  7. for {
  8. for name, c := range r.Counters() {
  9. l.Printf("counter %s\n\tcount:\t%9d\n", name, c.Count())
  10. }
  11. for name, g := range r.Gauges() {
  12. l.Printf("gauge %s\n\tvalue:\t%9d\n", name, g.Value())
  13. }
  14. r.RunHealthchecks()
  15. for name, h := range r.Healthchecks() {
  16. l.Printf("healthcheck %s\n\terror: %v\n", name, h.Error())
  17. }
  18. for name, h := range r.Histograms() {
  19. ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
  20. l.Printf(
  21. `histogram %s
  22. count: %9d
  23. min: %9d
  24. max: %9d
  25. mean: %12.2f
  26. stddev: %12.2f
  27. median: %12.2f
  28. 75%%: %12.2f
  29. 95%%: %12.2f
  30. 99%%: %12.2f
  31. 99.9%%: %12.2f
  32. `,
  33. name,
  34. h.Count(),
  35. h.Min(),
  36. h.Max(),
  37. h.Mean(),
  38. h.StdDev(),
  39. ps[0],
  40. ps[1],
  41. ps[2],
  42. ps[3],
  43. ps[4],
  44. )
  45. }
  46. for name, m := range r.Meters() {
  47. l.Printf(
  48. `meter %s
  49. count: %9d
  50. 1-min: %12.2f
  51. 5-min: %12.2f
  52. 15-min: %12.2f
  53. mean: %12.2f
  54. `,
  55. name,
  56. m.Count(),
  57. m.Rate1(),
  58. m.Rate5(),
  59. m.Rate15(),
  60. m.RateMean(),
  61. )
  62. }
  63. for name, t := range r.Timers() {
  64. ps := t.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
  65. l.Printf(
  66. `timer %s
  67. count: %9d
  68. min: %9d
  69. max: %9d
  70. mean: %12.2f
  71. stddev: %12.2f
  72. median: %12.2f
  73. 75%%: %12.2f
  74. 95%%: %12.2f
  75. 99%%: %12.2f
  76. 99.9%%: %12.2f
  77. 1-min: %12.2f
  78. 5-min: %12.2f
  79. 15-min: %12.2f
  80. mean: %12.2f
  81. `,
  82. name,
  83. t.Count(),
  84. t.Min(),
  85. t.Max(),
  86. t.Mean(),
  87. t.StdDev(),
  88. ps[0],
  89. ps[1],
  90. ps[2],
  91. ps[3],
  92. ps[4],
  93. t.Rate1(),
  94. t.Rate5(),
  95. t.Rate15(),
  96. t.RateMean(),
  97. )
  98. }
  99. time.Sleep(int64(1e9) * int64(interval))
  100. }
  101. }