From fbe86e3494de8508ecc0d800f893fb719e2d76de Mon Sep 17 00:00:00 2001 From: Jared Wasinger Date: Tue, 1 Apr 2025 22:28:54 +0200 Subject: [PATCH] internal/testlog: when instantiating new logger via With, set logger handler reference as the bufHandler in the newly-instantiated logger instead of copying from parent --- internal/testlog/testlog.go | 3 ++- internal/testlog/testlog_test.go | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 internal/testlog/testlog_test.go diff --git a/internal/testlog/testlog.go b/internal/testlog/testlog.go index ad61af9eac..1cb25dfa2c 100644 --- a/internal/testlog/testlog.go +++ b/internal/testlog/testlog.go @@ -170,7 +170,8 @@ func (l *logger) Crit(msg string, ctx ...interface{}) { } func (l *logger) With(ctx ...interface{}) log.Logger { - return &logger{l.t, l.l.With(ctx...), l.mu, l.h} + newLogger := l.l.With(ctx...) + return &logger{l.t, newLogger, l.mu, newLogger.Handler().(*bufHandler)} } func (l *logger) New(ctx ...interface{}) log.Logger { diff --git a/internal/testlog/testlog_test.go b/internal/testlog/testlog_test.go new file mode 100644 index 0000000000..378a41f72a --- /dev/null +++ b/internal/testlog/testlog_test.go @@ -0,0 +1,21 @@ +package testlog + +import ( + "github.com/ethereum/go-ethereum/log" + "testing" +) + +func TestLogging(t *testing.T) { + l := Logger(t, log.LevelInfo) + subLogger := l.New("foobar", 123) + + l.Info("Visible") + subLogger.Info("Hide and seek") // not visible due to sub buffer never being flushed + l.Info("Also visible") + + t.Log("flushed: ", l.Handler().(*bufHandler).buf) + t.Log("remaining: ", subLogger.Handler().(*bufHandler).buf) + // horrible hack to manually bring back the expected log data + l.Handler().(*bufHandler).buf = subLogger.Handler().(*bufHandler).buf + l.(*logger).flush() +}