testlog

package
v0.0.0-...-28a9180 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2026 License: MIT, LGPL-3.0 Imports: 14 Imported by: 0

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, handlerMod func(slog.Handler) slog.Handler) log.Logger

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 (h *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 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 (*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) 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()
	Name() string
	Cleanup(func())
}

Testing interfaces 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