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  }