github.com/line/ostracon@v1.0.10-0.20230328032236-7f20145f065d/libs/log/log_level_test.go (about) 1 package log_test 2 3 import ( 4 "bytes" 5 "strings" 6 "testing" 7 8 "github.com/line/ostracon/libs/log" 9 ) 10 11 const ( 12 defaultLogLevelValue = "info" 13 ) 14 15 func TestParseLogLevel(t *testing.T) { 16 var buf bytes.Buffer 17 jsonLogger := log.NewOCJSONLoggerNoTS(&buf) 18 19 correctLogLevels := []struct { 20 lvl string 21 expectedLogLines []string 22 }{ 23 {"mempool:error", []string{ 24 ``, // if no default is given, assume info 25 ``, 26 `{"_msg":"Mesmero","level":"error","module":"mempool"}`, 27 `{"_msg":"Mind","level":"info","module":"state"}`, // if no default is given, assume info 28 ``}}, 29 30 {"mempool:error,*:debug", []string{ 31 `{"_msg":"Kingpin","level":"debug","module":"wire"}`, 32 ``, 33 `{"_msg":"Mesmero","level":"error","module":"mempool"}`, 34 `{"_msg":"Mind","level":"info","module":"state"}`, 35 `{"_msg":"Gideon","level":"debug"}`}}, 36 37 {"*:debug,wire:none", []string{ 38 ``, 39 `{"_msg":"Kitty Pryde","level":"info","module":"mempool"}`, 40 `{"_msg":"Mesmero","level":"error","module":"mempool"}`, 41 `{"_msg":"Mind","level":"info","module":"state"}`, 42 `{"_msg":"Gideon","level":"debug"}`}}, 43 } 44 45 for _, c := range correctLogLevels { 46 logger, err := log.ParseLogLevel(c.lvl, jsonLogger, defaultLogLevelValue) 47 if err != nil { 48 t.Fatal(err) 49 } 50 51 buf.Reset() 52 53 logger.With("module", "mempool").With("module", "wire").Debug("Kingpin") 54 if have := strings.TrimSpace(buf.String()); c.expectedLogLines[0] != have { 55 t.Errorf("\nwant '%s'\nhave '%s'\nlevel '%s'", c.expectedLogLines[0], have, c.lvl) 56 } 57 58 buf.Reset() 59 60 logger.With("module", "mempool").Info("Kitty Pryde") 61 if have := strings.TrimSpace(buf.String()); c.expectedLogLines[1] != have { 62 t.Errorf("\nwant '%s'\nhave '%s'\nlevel '%s'", c.expectedLogLines[1], have, c.lvl) 63 } 64 65 buf.Reset() 66 67 logger.With("module", "mempool").Error("Mesmero") 68 if have := strings.TrimSpace(buf.String()); c.expectedLogLines[2] != have { 69 t.Errorf("\nwant '%s'\nhave '%s'\nlevel '%s'", c.expectedLogLines[2], have, c.lvl) 70 } 71 72 buf.Reset() 73 74 logger.With("module", "state").Info("Mind") 75 if have := strings.TrimSpace(buf.String()); c.expectedLogLines[3] != have { 76 t.Errorf("\nwant '%s'\nhave '%s'\nlevel '%s'", c.expectedLogLines[3], have, c.lvl) 77 } 78 79 buf.Reset() 80 81 logger.Debug("Gideon") 82 if have := strings.TrimSpace(buf.String()); c.expectedLogLines[4] != have { 83 t.Errorf("\nwant '%s'\nhave '%s'\nlevel '%s'", c.expectedLogLines[4], have, c.lvl) 84 } 85 } 86 87 incorrectLogLevel := []string{"some", "mempool:some", "*:some,mempool:error"} 88 for _, lvl := range incorrectLogLevel { 89 if _, err := log.ParseLogLevel(lvl, jsonLogger, defaultLogLevelValue); err == nil { 90 t.Fatalf("Expected %s to produce error", lvl) 91 } 92 } 93 }