You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
3.3 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. package log_test
  2. import (
  3. "bytes"
  4. "strings"
  5. "testing"
  6. "github.com/tendermint/tendermint/libs/log"
  7. )
  8. func TestVariousLevels(t *testing.T) {
  9. testCases := []struct {
  10. name string
  11. allowed log.Option
  12. want string
  13. }{
  14. {
  15. "AllowAll",
  16. log.AllowAll(),
  17. strings.Join([]string{
  18. `{"_msg":"here","level":"debug","this is":"debug log"}`,
  19. `{"_msg":"here","level":"info","this is":"info log"}`,
  20. `{"_msg":"here","level":"error","this is":"error log"}`,
  21. }, "\n"),
  22. },
  23. {
  24. "AllowDebug",
  25. log.AllowDebug(),
  26. strings.Join([]string{
  27. `{"_msg":"here","level":"debug","this is":"debug log"}`,
  28. `{"_msg":"here","level":"info","this is":"info log"}`,
  29. `{"_msg":"here","level":"error","this is":"error log"}`,
  30. }, "\n"),
  31. },
  32. {
  33. "AllowInfo",
  34. log.AllowInfo(),
  35. strings.Join([]string{
  36. `{"_msg":"here","level":"info","this is":"info log"}`,
  37. `{"_msg":"here","level":"error","this is":"error log"}`,
  38. }, "\n"),
  39. },
  40. {
  41. "AllowError",
  42. log.AllowError(),
  43. strings.Join([]string{
  44. `{"_msg":"here","level":"error","this is":"error log"}`,
  45. }, "\n"),
  46. },
  47. {
  48. "AllowNone",
  49. log.AllowNone(),
  50. ``,
  51. },
  52. }
  53. for _, tc := range testCases {
  54. tc := tc
  55. t.Run(tc.name, func(t *testing.T) {
  56. var buf bytes.Buffer
  57. logger := log.NewFilter(log.NewTMJSONLogger(&buf), tc.allowed)
  58. logger.Debug("here", "this is", "debug log")
  59. logger.Info("here", "this is", "info log")
  60. logger.Error("here", "this is", "error log")
  61. if want, have := tc.want, strings.TrimSpace(buf.String()); want != have {
  62. t.Errorf("\nwant:\n%s\nhave:\n%s", want, have)
  63. }
  64. })
  65. }
  66. }
  67. func TestLevelContext(t *testing.T) {
  68. var buf bytes.Buffer
  69. logger := log.NewTMJSONLogger(&buf)
  70. logger = log.NewFilter(logger, log.AllowError())
  71. logger = logger.With("context", "value")
  72. logger.Error("foo", "bar", "baz")
  73. want := `{"_msg":"foo","bar":"baz","context":"value","level":"error"}`
  74. have := strings.TrimSpace(buf.String())
  75. if want != have {
  76. t.Errorf("\nwant '%s'\nhave '%s'", want, have)
  77. }
  78. buf.Reset()
  79. logger.Info("foo", "bar", "baz")
  80. if want, have := ``, strings.TrimSpace(buf.String()); want != have {
  81. t.Errorf("\nwant '%s'\nhave '%s'", want, have)
  82. }
  83. }
  84. func TestVariousAllowWith(t *testing.T) {
  85. var buf bytes.Buffer
  86. logger := log.NewTMJSONLogger(&buf)
  87. logger1 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value"))
  88. logger1.With("context", "value").Info("foo", "bar", "baz")
  89. want := `{"_msg":"foo","bar":"baz","context":"value","level":"info"}`
  90. have := strings.TrimSpace(buf.String())
  91. if want != have {
  92. t.Errorf("\nwant '%s'\nhave '%s'", want, have)
  93. }
  94. buf.Reset()
  95. logger2 := log.NewFilter(
  96. logger,
  97. log.AllowError(),
  98. log.AllowInfoWith("context", "value"),
  99. log.AllowNoneWith("user", "Sam"),
  100. )
  101. logger2.With("context", "value", "user", "Sam").Info("foo", "bar", "baz")
  102. if want, have := ``, strings.TrimSpace(buf.String()); want != have {
  103. t.Errorf("\nwant '%s'\nhave '%s'", want, have)
  104. }
  105. buf.Reset()
  106. logger3 := log.NewFilter(
  107. logger,
  108. log.AllowError(),
  109. log.AllowInfoWith("context", "value"),
  110. log.AllowNoneWith("user", "Sam"),
  111. )
  112. logger3.With("user", "Sam").With("context", "value").Info("foo", "bar", "baz")
  113. want = `{"_msg":"foo","bar":"baz","context":"value","level":"info","user":"Sam"}`
  114. have = strings.TrimSpace(buf.String())
  115. if want != have {
  116. t.Errorf("\nwant '%s'\nhave '%s'", want, have)
  117. }
  118. }