From 34ff24ffc284d794b2e46ceffe14a8ce61c6a1c6 Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Fri, 7 Nov 2025 10:03:37 -0500 Subject: [PATCH] Prevent logptest.NewTestingLogger from panics. Because NewTestingLogger used testing.T as the logger output, if the logger is used after the test has ended, it will panic. This behaviour has been seen a few times and causes flakiness in our CI. To mitigate this, NewTestingLogger now just calls NewFileLogger that uses a file as the logger output, thus being safe for use even after the test has ended. --- logp/logptest/logptest.go | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/logp/logptest/logptest.go b/logp/logptest/logptest.go index 9573b62..08b23b8 100644 --- a/logp/logptest/logptest.go +++ b/logp/logptest/logptest.go @@ -22,23 +22,19 @@ import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" - "go.uber.org/zap/zaptest" "go.uber.org/zap/zaptest/observer" "github.com/elastic/elastic-agent-libs/logp" ) -// NewTestingLogger returns a testing suitable logp.Logger that uses the -// [testing.T] as the logger output. +// NewTestingLogger Just calls [NewFileLogger], the log if is placed in the +// the folder returned by [os.TempDir]. +// +// DEPRECATED: The logger returned by [NewTestingLogger] can panic if it is +// used after the test has ended. Use [NewFileLogger] instead. func NewTestingLogger(t testing.TB, selector string, options ...logp.LogOption) *logp.Logger { - log := zaptest.NewLogger(t, zaptest.WrapOptions(options...)) - log = log.Named(selector) - - logger, err := logp.NewZapLogger(log) - if err != nil { - t.Fatal(err) - } - return logger + l := NewFileLogger(t, "") + return l.Logger } // NewTestingLoggerWithObserver returns a testing suitable logp.Logger that uses the