log.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. for name, h := range r.Healthchecks() {
  15. l.Printf("healthcheck %s TODO\n", name, h)
  16. }
  17. for name, h := range r.Histograms() {
  18. ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
  19. l.Printf(
  20. `histogram %s
  21. count: %9d
  22. min: %9d
  23. max: %9d
  24. mean: %12.2f
  25. stddev: %12.2f
  26. median: %12.2f
  27. 75%%: %12.2f
  28. 95%%: %12.2f
  29. 99%%: %12.2f
  30. 99.9%%: %12.2f
  31. `,
  32. name,
  33. h.Count(),
  34. h.Min(),
  35. h.Max(),
  36. h.Mean(),
  37. h.StdDev(),
  38. ps[0],
  39. ps[1],
  40. ps[2],
  41. ps[3],
  42. ps[4],
  43. )
  44. }
  45. for name, m := range r.Meters() {
  46. l.Printf(
  47. `meter %s
  48. count: %9d
  49. 1-min: %12.2f
  50. 5-min: %12.2f
  51. 15-min: %12.2f
  52. mean: %12.2f
  53. `,
  54. name,
  55. m.Count(),
  56. m.Rate1(),
  57. m.Rate5(),
  58. m.Rate15(),
  59. m.RateMean(),
  60. )
  61. }
  62. for name, t := range r.Timers() {
  63. l.Printf("timer %s TODO\n", name, t)
  64. }
  65. time.Sleep(int64(1e9) * int64(interval))
  66. }
  67. }