github.com/KYVENetwork/cometbft/v38@v38.0.3/libs/log/filter_test.go (about)

     1  package log_test
     2  
     3  import (
     4  	"bytes"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/KYVENetwork/cometbft/v38/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  }