testlog

package
v1.16.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: MIT, LGPL-3.0 Imports: 17 Imported by: 5

README

testlog

github.com/ethereum/go-ethereum/internal/testlog: a Go-ethereum util for logging in tests.

Since we use the same logging, but as an external package, we have to move the test utility to our own internal package.

This fork also made minor modifications:

  • Enable color by default.
  • Add estimateInfoLen and use this for message padding in flush() to align the contents of the log entries, compensating for the different lengths of the log decoration that the Go library adds.

Documentation

Overview

Package testlog provides a log handler for unit tests.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Logger

func Logger(t Testing, level slog.Level) log.Logger

Logger returns a logger which logs to the unit test log of t.

func LoggerWithHandlerMod

func LoggerWithHandlerMod(t Testing, level slog.Level, handlerMods ...logmods.HandlerMod) log.Logger

func WrapCaptureLogger

func WrapCaptureLogger(h slog.Handler) slog.Handler

Types

type CapturedAttributes

type CapturedAttributes struct {
	Parent     *CapturedAttributes
	Attributes []slog.Attr
}

CapturedAttributes forms a chain of inherited attributes, to traverse on captured log records.

func (*CapturedAttributes) Attrs

func (r *CapturedAttributes) Attrs(f func(slog.Attr) bool)

Attrs calls f on each Attr in the CapturedAttributes. Iteration stops if f returns false.

type CapturedRecord

type CapturedRecord struct {
	Parent *CapturedAttributes
	*slog.Record
}

CapturedRecord is a wrapped around a regular log-record, to preserve the inherited attributes context, without mutating the record or reordering attributes.

func (*CapturedRecord) AttrValue

func (r *CapturedRecord) AttrValue(name string) (v any)

func (*CapturedRecord) Attrs

func (r *CapturedRecord) Attrs(f func(slog.Attr) bool)

Attrs calls f on each Attr in the CapturedRecord. Iteration stops if f returns false.

type Capturer

type Capturer interface {
	slog.Handler
	Clear()
	FindLog(filters ...LogFilter) *CapturedRecord
	FindLogs(filters ...LogFilter) []*CapturedRecord
}

type CapturingHandler

type CapturingHandler struct {
	Logs *[]*CapturedRecord // shared among derived CapturingHandlers
	// contains filtered or unexported fields
}

CapturingHandler provides a log handler that captures all log records and optionally forwards them to a delegate. Note that it is not thread safe.

func CaptureLogger

func CaptureLogger(t Testing, level slog.Level) (_ log.Logger, ch *CapturingHandler)

func (*CapturingHandler) Clear

func (c *CapturingHandler) Clear()

func (*CapturingHandler) Enabled

func (c *CapturingHandler) Enabled(ctx context.Context, level slog.Level) bool

func (*CapturingHandler) FindLog

func (c *CapturingHandler) FindLog(filters ...LogFilter) *CapturedRecord

func (*CapturingHandler) FindLogs

func (c *CapturingHandler) FindLogs(filters ...LogFilter) []*CapturedRecord

func (*CapturingHandler) Handle

func (c *CapturingHandler) Handle(ctx context.Context, r slog.Record) error

func (*CapturingHandler) RequireMessageContained

func (c *CapturingHandler) RequireMessageContained(t require.TestingT, message string, filters ...LogFilter)

func (*CapturingHandler) RequireMessageContainedNTimes

func (c *CapturingHandler) RequireMessageContainedNTimes(t require.TestingT, message string, n int, filters ...LogFilter)

func (*CapturingHandler) RequireMessageContainedOnce

func (c *CapturingHandler) RequireMessageContainedOnce(t require.TestingT, message string, filters ...LogFilter)

func (*CapturingHandler) Unwrap

func (c *CapturingHandler) Unwrap() slog.Handler

func (*CapturingHandler) WithAttrs

func (c *CapturingHandler) WithAttrs(attrs []slog.Attr) slog.Handler

func (*CapturingHandler) WithGroup

func (c *CapturingHandler) WithGroup(name string) slog.Handler

type LogFilter

type LogFilter func(record *CapturedRecord) bool

func NewAttributesContainsFilter

func NewAttributesContainsFilter(key, value string) LogFilter

func NewAttributesFilter

func NewAttributesFilter(key, value string) LogFilter

func NewErrContainsFilter

func NewErrContainsFilter(errMessage string) LogFilter

func NewLevelFilter

func NewLevelFilter(level slog.Level) LogFilter

func NewMessageContainsFilter

func NewMessageContainsFilter(message string) LogFilter

func NewMessageFilter

func NewMessageFilter(message string) LogFilter

type Testing

type Testing interface {
	Logf(format string, args ...any)
	Helper()
	FailNow()
	Name() string
	Cleanup(func())
}

Testing interface to log to. Some functions are marked as Helper function to log the call site accurately. Standard Go testing.TB implements this, as well as Hive and other Go-like test frameworks.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL