log

package
v0.1.0-alpha.19 Latest Latest
Warning

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

Go to latest
Published: Feb 17, 2026 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package log provides structured logging functionality with context support.

Index

Constants

View Source
const (
	// DomainNameKey is the context key for domain name.
	DomainNameKey contextKey = "domainName"
	// TraceIDKey is the context key for trace ID.
	TraceIDKey contextKey = "traceId"
	// ServiceNameKey is the context key for service name.
	ServiceNameKey contextKey = "serviceName"
	// StartupTaskKey is the context key for startup task.
	StartupTaskKey contextKey = "startupTask"
	// UserIDKey is the context key for user ID.
	UserIDKey contextKey = "userId"
	// WorkerIDKey is the context key worker of queue processor.
	WorkerIDKey contextKey = "workerId"
)
View Source
const (
	// WideEventKey is the default context key for request-wide events.
	WideEventKey contextKey = "wideEvent"
)

Variables

View Source
var Logger logger = New(os.Stdout, "text", slog.LevelInfo, nil) //nolint:gochecknoglobals

Logger is the default logger instance used by package-level logging functions.

Functions

func Debug

func Debug(msg string, args ...any)

Debug logs a message at Debug level.

func DebugContext

func DebugContext(ctx context.Context, msg string, args ...any)

DebugContext logs a message at Debug level with context.

func Error

func Error(msg string, args ...any)

Error logs a message at Error level.

func ErrorContext

func ErrorContext(ctx context.Context, msg string, args ...any)

ErrorContext logs a message at Error level with context.

func Info

func Info(msg string, args ...any)

Info logs a message at Info level.

func InfoContext

func InfoContext(ctx context.Context, msg string, args ...any)

InfoContext logs a message at Info level with context.

func New

func New(w io.Writer, loggerType string, level slog.Level, contextKeys map[string]any) *slog.Logger

New creates a new slog.Logger with the specified type (json/text), log level, and additional context keys to include.

func SetDefault

func SetDefault(l logger)

SetDefault sets the default logger used by the package-level logging functions.

func Warn

func Warn(msg string, args ...any)

Warn logs a message at Warn level.

func WarnContext

func WarnContext(ctx context.Context, msg string, args ...any)

WarnContext logs a message at Warn level with context.

Types

type DefaultSampler

type DefaultSampler struct {
	// contains filtered or unexported fields
}

DefaultSampler samples by error, duration, status code, and random keep rate.

func NewDefaultSampler

func NewDefaultSampler(slowThreshold time.Duration, keepHTTPStatusAtLeast int, randomKeepRate float64) *DefaultSampler

NewDefaultSampler creates a rule-based sampler.

func (*DefaultSampler) ShouldSample

func (s *DefaultSampler) ShouldSample(_ context.Context, e *Event) bool

ShouldSample decides if event should be logged.

type Event

type Event struct {
	// contains filtered or unexported fields
}

Event is a mutable wide event.

func EventFromContext

func EventFromContext(ctx context.Context) *Event

EventFromContext returns a wide event from context when present.

func NewEvent

func NewEvent(name string) *Event

NewEvent creates a new wide event.

func (*Event) AddAttrs

func (e *Event) AddAttrs(attrs map[string]any)

AddAttrs adds attributes to event data.

func (*Event) AddError

func (e *Event) AddError(err error)

AddError appends an error and escalates event level to error.

func (*Event) AddStep

func (e *Event) AddStep(level slog.Level, name string)

AddStep appends an event step and potentially escalates level.

func (*Event) Attr

func (e *Event) Attr(key string) (any, bool)

Attr returns an event attribute by key.

func (*Event) Duration

func (e *Event) Duration() time.Duration

Duration returns the event duration.

func (*Event) Finish

func (e *Event) Finish()

Finish stores current event duration.

func (*Event) HasErrors

func (e *Event) HasErrors() bool

HasErrors returns true if the event has errors.

func (*Event) Level

func (e *Event) Level() slog.Level

Level returns the event level.

func (*Event) Name

func (e *Event) Name() string

Name returns the event name.

func (*Event) SetLevel

func (e *Event) SetLevel(level slog.Level)

SetLevel sets event level if it is higher than the current one.

func (*Event) ToAttrs

func (e *Event) ToAttrs() []slog.Attr

ToAttrs converts event to slog attributes.

type Sampler

type Sampler interface {
	ShouldSample(ctx context.Context, e *Event) bool
}

Sampler decides whether a wide event should be emitted.

type SamplerFunc

type SamplerFunc func(ctx context.Context, e *Event) bool

SamplerFunc is a function adapter for Sampler.

func (SamplerFunc) ShouldSample

func (f SamplerFunc) ShouldSample(ctx context.Context, e *Event) bool

ShouldSample implements Sampler.

type TraceIDMiddleware

type TraceIDMiddleware struct {
	// contains filtered or unexported fields
}

TraceIDMiddleware adds a trace ID to request context and response headers.

func NewTraceIDMiddleware

func NewTraceIDMiddleware(contextKey any, header string) *TraceIDMiddleware

NewTraceIDMiddleware returns a new TraceID middleware. If key is nil, TraceIDKey is used. If header is empty, "Platforma-Trace-Id" is used.

func (*TraceIDMiddleware) Wrap

Wrap adds trace ID to requests.

type WideEventLogger

type WideEventLogger struct {
	// contains filtered or unexported fields
}

WideEventLogger writes wide events with tail sampling.

func NewWideEventLogger

func NewWideEventLogger(w io.Writer, s Sampler, loggerType string, contextKeys map[string]any) *WideEventLogger

NewWideEventLogger creates a wide-event logger.

func (*WideEventLogger) WriteEvent

func (l *WideEventLogger) WriteEvent(ctx context.Context, e *Event)

WriteEvent finalizes event duration and conditionally writes it.

type WideEventMiddleware

type WideEventMiddleware struct {
	// contains filtered or unexported fields
}

WideEventMiddleware creates and writes a request-wide event.

func NewWideEventMiddleware

func NewWideEventMiddleware(logger *WideEventLogger, eventName string, contextKey any) *WideEventMiddleware

NewWideEventMiddleware creates middleware that stores a wide event in request context and writes it after request processing.

func (*WideEventMiddleware) Wrap

Wrap creates request-wide event, stores it in context and writes event after handling.

Jump to

Keyboard shortcuts

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