mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-02-26 15:47:21 +00:00
When we instantiate a sub-logger via `go-ethereum/internal/testlog/logger.With`, we copy the reference to the `bufHandler` from the parent logger. However, internally, `go-ethereum/internal/testlog/logger.With` calls `log/slog/Logger.With` which creates a new handler instance (via `internal/bufHandler.WithAttrs`). This PR modifies sub-logger instantiation to use the newly-instantiated handler, instead of copying the reference from the parent instance. The type cast from `slog.Handler` to `*bufHandler` in `internal/testlog/Logger.With` is safe here because a `internal/testlog/Logger` can only be instantiated with a `*bufHandler` as the underlying handler type. Note, that I've also removed a pre-existing method that broke the above assumption. However, this method is not used in our codebase. I'm not sure if the assumption holds for forks of geth (e.g. optimism has modified the testlogger somewhat allowing test loggers to accept arbitrary handler types), but it seems okay to break API compatibility given that this is in the `internal` package. closes https://github.com/ethereum/go-ethereum/issues/31533 |
||
|---|---|---|
| .. | ||
| evm-benchmarks@d8b88f4046 | ||
| fuzzers | ||
| solidity | ||
| testdata@faf33b4714 | ||
| block_test.go | ||
| block_test_util.go | ||
| difficulty_test.go | ||
| difficulty_test_util.go | ||
| gen_btheader.go | ||
| gen_difficultytest.go | ||
| gen_stauthorization.go | ||
| gen_stenv.go | ||
| gen_sttransaction.go | ||
| init.go | ||
| init_test.go | ||
| rlp_test.go | ||
| rlp_test_util.go | ||
| state_test.go | ||
| state_test_util.go | ||
| transaction_test.go | ||
| transaction_test_util.go | ||