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