diff --git a/common/types_test.go b/common/types_test.go index cec689ea39..ad892671b5 100644 --- a/common/types_test.go +++ b/common/types_test.go @@ -25,7 +25,6 @@ import ( "reflect" "strings" "testing" - "time" ) func TestBytesConversion(t *testing.T) { @@ -584,14 +583,3 @@ func TestAddressEIP55(t *testing.T) { t.Fatal("Unexpected address after unmarshal") } } - -func BenchmarkPrettyDuration(b *testing.B) { - var x = PrettyDuration(time.Duration(int64(1203123912312))) - b.Logf("Pre %s", time.Duration(x).String()) - var a string - b.ResetTimer() - for i := 0; i < b.N; i++ { - a = x.String() - } - b.Logf("Post %s", a) -} diff --git a/log/format.go b/log/format.go index 1adf79c17e..6a03013b81 100644 --- a/log/format.go +++ b/log/format.go @@ -33,16 +33,8 @@ var locationTrims = []string{ // format output. func PrintOrigins(print bool) { locationEnabled.Store(print) - if print { - stackEnabled.Store(true) - } } -// stackEnabled is an atomic flag controlling whether the log handler needs -// to store the callsite stack. This is needed in case any handler wants to -// print locations (locationEnabled), use vmodule, or print full stacks (BacktraceAt). -var stackEnabled atomic.Bool - // locationEnabled is an atomic flag controlling whether the terminal formatter // should append the log locations too when printing entries. var locationEnabled atomic.Bool diff --git a/log/handler_glog.go b/log/handler_glog.go index afca0808b3..6db5f1a4c9 100644 --- a/log/handler_glog.go +++ b/log/handler_glog.go @@ -139,10 +139,7 @@ func (h *GlogHandler) Vmodule(ruleset string) error { h.patterns = filter h.siteCache = make(map[uintptr]Lvl) h.override.Store(len(filter) != 0) - // Enable location storage (globally) - if len(h.patterns) > 0 { - stackEnabled.Store(true) - } + return nil } @@ -175,8 +172,7 @@ func (h *GlogHandler) BacktraceAt(location string) error { h.location = location h.backtrace.Store(len(location) > 0) - // Enable location storage (globally) - stackEnabled.Store(true) + return nil } diff --git a/log/logger.go b/log/logger.go index 42e7e375d0..4e471a22da 100644 --- a/log/logger.go +++ b/log/logger.go @@ -177,22 +177,19 @@ type logger struct { } func (l *logger) write(msg string, lvl Lvl, ctx []interface{}, skip int) { - record := &Record{ + l.h.Log(&Record{ Time: time.Now(), Lvl: lvl, Msg: msg, Ctx: newContext(l.ctx, ctx), + Call: stack.Caller(skip), KeyNames: RecordKeyNames{ Time: timeKey, Msg: msgKey, Lvl: lvlKey, Ctx: ctxKey, }, - } - if stackEnabled.Load() { - record.Call = stack.Caller(skip) - } - l.h.Log(record) + }) } func (l *logger) New(ctx ...interface{}) Logger { diff --git a/log/logger_test.go b/log/logger_test.go deleted file mode 100644 index 2e59b3fdf0..0000000000 --- a/log/logger_test.go +++ /dev/null @@ -1,67 +0,0 @@ -package log - -import ( - "bytes" - "os" - "strings" - "testing" -) - -// TestLoggingWithTrace checks that if BackTraceAt is set, then the -// gloghandler is capable of spitting out a stacktrace -func TestLoggingWithTrace(t *testing.T) { - defer stackEnabled.Store(stackEnabled.Load()) - out := new(bytes.Buffer) - logger := New() - { - glog := NewGlogHandler(StreamHandler(out, TerminalFormat(false))) - glog.Verbosity(LvlTrace) - if err := glog.BacktraceAt("logger_test.go:24"); err != nil { - t.Fatal(err) - } - logger.SetHandler(glog) - } - logger.Trace("a message", "foo", "bar") // Will be bumped to INFO - have := out.String() - if !strings.HasPrefix(have, "INFO") { - t.Fatalf("backtraceat should bump level to info: %s", have) - } - // The timestamp is locale-dependent, so we want to trim that off - // "INFO [01-01|00:00:00.000] a messag ..." -> "a messag..." - have = strings.Split(have, "]")[1] - wantPrefix := " a message\n\ngoroutine" - if !strings.HasPrefix(have, wantPrefix) { - t.Errorf("\nhave: %q\nwant: %q\n", have, wantPrefix) - } -} - -// TestLoggingWithVmodule checks that vmodule works. -func TestLoggingWithVmodule(t *testing.T) { - defer stackEnabled.Store(stackEnabled.Load()) - out := new(bytes.Buffer) - logger := New() - { - glog := NewGlogHandler(StreamHandler(out, TerminalFormat(false))) - glog.Verbosity(LvlCrit) - logger.SetHandler(glog) - logger.Warn("This should not be seen", "ignored", "true") - glog.Vmodule("logger_test.go=5") - } - logger.Trace("a message", "foo", "bar") - have := out.String() - // The timestamp is locale-dependent, so we want to trim that off - // "INFO [01-01|00:00:00.000] a messag ..." -> "a messag..." - have = strings.Split(have, "]")[1] - want := " a message foo=bar\n" - if have != want { - t.Errorf("\nhave: %q\nwant: %q\n", have, want) - } -} - -func BenchmarkTraceLogging(b *testing.B) { - Root().SetHandler(LvlFilterHandler(LvlInfo, StreamHandler(os.Stderr, TerminalFormat(true)))) - b.ResetTimer() - for i := 0; i < b.N; i++ { - Trace("a message", "v", i) - } -}