logging

package
v0.1.11 Latest Latest
Warning

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

Go to latest
Published: May 13, 2024 License: MPL-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BySerialDesc

func BySerialDesc(i, j Message) int

BySerialDesc sorts log messages by their serial.

Types

type Attr

type Attr struct {
	Key   string
	Value string
}

type Enricher

type Enricher interface {
	EnrichLogRecord(args ...any) []any
}

Enricher implementations update a log record with further info

type Interface

type Interface interface {
	Debug(msg string, args ...any)
	Info(msg string, args ...any)
	Warn(msg string, args ...any)
	Error(msg string, args ...any)
	AddEnricher(enricher Enricher)
}
var Discard Interface = &noop{}

type Logger

type Logger struct {
	*pubsub.Broker[Message]
	// contains filtered or unexported fields
}

Logger wraps slog, providing further functionality such as emitting log records as pug events, and enriching records with further attributes.

func NewLogger

func NewLogger(opts Options) *Logger

NewLogger constructs Logger, a slog wrapper with additional functionality.

func (Logger) AddEnricher

func (e Logger) AddEnricher(enricher Enricher)

func (*Logger) Debug

func (l *Logger) Debug(msg string, args ...any)

func (*Logger) Error

func (l *Logger) Error(msg string, args ...any)

func (*Logger) Get added in v0.1.9

func (l *Logger) Get(id resource.ID) (Message, error)

Get retrieves a log message by ID.

func (*Logger) Info

func (l *Logger) Info(msg string, args ...any)

func (*Logger) List added in v0.1.9

func (l *Logger) List() []Message

List lists the log messages received thus far.

func (*Logger) Warn

func (l *Logger) Warn(msg string, args ...any)

type Message

type Message struct {
	Time       time.Time
	Level      string
	Message    string `json:"msg"`
	Attributes []Attr

	// Serial uniquely identifies the message (within the scope of the logger it
	// was emitted from). The higher the Serial number the newer the message.
	Serial uint

	// A message is a pug resource, but only insofar as it makes it easier to
	// handle consistently alongside all other resources (modules, workspaces,
	// etc) in the TUI.
	//
	// TODO: consider making resource an interface rather than a struct. A log
	// message doesn't need a UUID, and the serial above is sufficient.
	resource.Resource
}

Message is the event payload for a log message

type Options

type Options struct {
	// The log level of the logger
	Level string
	// Any additional writers the log handler should write to.
	AdditionalWriters []io.Writer
}

Jump to

Keyboard shortcuts

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