bea

package module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2026 License: MIT Imports: 9 Imported by: 0

README

bea

Package bea provides structured logging for Go. This repository is the Go port of the npm package @rickferrdevelop/bea-logger.

go get github.com/rickferrdev/bea-go

Documentation

Overview

Package bea provides structured logging with customizable formatters and transports, context propagation, child loggers, sensitive-field redaction, fallback delivery, and panic recovery at transport boundaries. It is the Go port of the npm package @rickferrdevelop/bea-logger.

Create a logger with NewDefault for colored console output, or use New to select a formatter and one or more transports. Logging methods return errors to the caller; Fatal records a fatal-level entry but does not exit the process. Context-aware variants forward cancellation and deadlines to every transport.

Index

Constants

This section is empty.

Variables

View Source
var (
	FormatSimple           = Simple()
	FormatJson             = Json()
	FormatPretty           = Pretty(Classic)
	FormatPrettyClassic    = FormatPretty
	FormatPrettyVibrant    = Pretty(Vibrant)
	FormatPrettySoft       = Pretty(Soft)
	FormatPrettyMonochrome = Pretty(Monochrome)
	FormatVerbose          = Verbose()
)
View Source
var (
	ClassicColors = PaletteColors{
		Info:  classicLevel(Blue),
		Warn:  classicLevel(Yellow),
		Error: classicLevel(Red),
		Fatal: classicLevel(Magenta),
		Debug: {
			Level:     []Color{Dim, Bold},
			Brackets:  []Color{Dim},
			Message:   []Color{Gray},
			Separator: []Color{Dim},
			Context:   dimContext(),
		},
	}
	VibrantColors = createPalette(
		map[Level]Color{Info: Cyan, Warn: Yellow, Error: Red, Fatal: Magenta, Debug: Green},
		[]Color{Bold},
		[]Color{White},
	)
	SoftColors = createPalette(
		map[Level]Color{Info: Blue, Warn: Yellow, Error: Red, Fatal: Magenta, Debug: Cyan},
		[]Color{Dim},
		[]Color{Gray},
	)
	MonochromeColors = createPalette(
		map[Level]Color{Info: White, Warn: White, Error: White, Fatal: White, Debug: Gray},
		[]Color{Bold},
		[]Color{Dim},
	)

	Palettes = map[PaletteName]PaletteColors{
		Classic:    ClassicColors,
		Vibrant:    VibrantColors,
		Soft:       SoftColors,
		Monochrome: MonochromeColors,
	}
)
View Source
var (
	ConsoleTransport = []Transport{Console()}
)

Functions

func ContextToString

func ContextToString(context map[string]any) string

func FieldToContext

func FieldToContext(fields []Field) map[string]any

func Style

func Style(text string, colors ...Color) string

Types

type Color

type Color string
const (
	Reset     Color = "\033[0m"
	Bold      Color = "\033[1m"
	Dim       Color = "\033[2m"
	Italic    Color = "\033[3m"
	Underline Color = "\033[4m"
	Blink     Color = "\033[5m"
	Reverse   Color = "\033[7m"
	Hidden    Color = "\033[8m"
	Strike    Color = "\033[9m"
)
const (
	Black   Color = "\033[30m"
	Red     Color = "\033[31m"
	Green   Color = "\033[32m"
	Yellow  Color = "\033[33m"
	Blue    Color = "\033[34m"
	Purple  Color = "\033[35m"
	Cyan    Color = "\033[36m"
	White   Color = "\033[37m"
	Default Color = "\033[39m"
	Gray    Color = BrightBlack
	Magenta Color = Purple
)
const (
	BrightBlack  Color = "\033[90m"
	BrightRed    Color = "\033[91m"
	BrightGreen  Color = "\033[92m"
	BrightYellow Color = "\033[93m"
	BrightBlue   Color = "\033[94m"
	BrightPurple Color = "\033[95m"
	BrightCyan   Color = "\033[96m"
	BrightWhite  Color = "\033[97m"
)
const (
	BgBlack   Color = "\033[40m"
	BgRed     Color = "\033[41m"
	BgGreen   Color = "\033[42m"
	BgYellow  Color = "\033[43m"
	BgBlue    Color = "\033[44m"
	BgPurple  Color = "\033[45m"
	BgCyan    Color = "\033[46m"
	BgWhite   Color = "\033[47m"
	BgDefault Color = "\033[49m"
	BgMagenta Color = BgPurple
)
const (
	BgBrightBlack  Color = "\033[100m"
	BgBrightRed    Color = "\033[101m"
	BgBrightGreen  Color = "\033[102m"
	BgBrightYellow Color = "\033[103m"
	BgBrightBlue   Color = "\033[104m"
	BgBrightPurple Color = "\033[105m"
	BgBrightCyan   Color = "\033[106m"
	BgBrightWhite  Color = "\033[107m"
)

type ContextColorOverrides

type ContextColorOverrides struct {
	Key       []Color
	Value     []Color
	Separator []Color
}

type ContextColors

type ContextColors struct {
	Key       []Color
	Value     []Color
	Separator []Color
}

type CustomFormatterOptions

type CustomFormatterOptions struct {
	Palette PaletteName
	Pretty  LogColorOverrides
}

type Data

type Data struct {
	Level     Level          `json:"level"`
	Message   string         `json:"message"`
	Timestamp time.Time      `json:"timestamp"`
	Context   map[string]any `json:"context,omitempty"`
}

type Field

type Field struct {
	Key   string
	Value any
}

func Any

func Any(key string, value any) Field

func Boolean

func Boolean(key string, value bool) Field

func Int

func Int(key string, value int) Field

func String

func String(key, value string) Field

type FileTransportOptions

type FileTransportOptions struct {
	Filename  string
	Formatter Formatter
	EOL       string
	Mode      os.FileMode
}

type Formatter

type Formatter func(data Data) (string, error)

func Custom

func Custom(options CustomFormatterOptions) Formatter

func Json

func Json() Formatter

func Pretty

func Pretty(variant PaletteName) Formatter

func Simple

func Simple() Formatter

func Verbose

func Verbose() Formatter

type Level

type Level string
const (
	Info  Level = "info"
	Warn  Level = "warn"
	Error Level = "error"
	Fatal Level = "fatal"
	Debug Level = "debug"
)

type LevelColorOverrides

type LevelColorOverrides struct {
	Level     []Color
	Brackets  []Color
	Message   []Color
	Separator []Color
	Context   ContextColorOverrides
}

type LevelColors

type LevelColors struct {
	Level     []Color
	Brackets  []Color
	Message   []Color
	Separator []Color
	Context   ContextColors
}

type LogColorOverrides

type LogColorOverrides map[Level]LevelColorOverrides

type Logger

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

func New

func New(format Formatter, transport []Transport, options ...Option) *Logger

func NewDefault

func NewDefault(options ...Option) *Logger

func (*Logger) Child

func (logger *Logger) Child(fields ...Field) *Logger

func (*Logger) Debug

func (logger *Logger) Debug(message string, fields ...Field) error

func (*Logger) DebugContext

func (logger *Logger) DebugContext(ctx context.Context, message string, fields ...Field) error

func (*Logger) Error

func (logger *Logger) Error(message string, fields ...Field) error

func (*Logger) ErrorContext

func (logger *Logger) ErrorContext(ctx context.Context, message string, fields ...Field) error

func (*Logger) Fatal

func (logger *Logger) Fatal(message string, fields ...Field) error

func (*Logger) FatalContext

func (logger *Logger) FatalContext(ctx context.Context, message string, fields ...Field) error

func (*Logger) Handler

func (logger *Logger) Handler(data Data) error

func (*Logger) HandlerContext

func (logger *Logger) HandlerContext(ctx context.Context, data Data) error

func (*Logger) Info

func (logger *Logger) Info(message string, fields ...Field) error

func (*Logger) InfoContext

func (logger *Logger) InfoContext(ctx context.Context, message string, fields ...Field) error

func (*Logger) Warn

func (logger *Logger) Warn(message string, fields ...Field) error

func (*Logger) WarnContext

func (logger *Logger) WarnContext(ctx context.Context, message string, fields ...Field) error

type M

type M map[string]any

type Option

type Option func(*Options)

func Redact

func Redact(key string, censor any) Option

type Options

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

type PaletteColors

type PaletteColors map[Level]LevelColors

type PaletteName

type PaletteName string
const (
	Classic    PaletteName = "classic"
	Vibrant    PaletteName = "vibrant"
	Soft       PaletteName = "soft"
	Monochrome PaletteName = "monochrome"
)

type Transport

type Transport func(ctx context.Context, data Data, formatted string) error

func Console

func Console() Transport

func Fallback

func Fallback(primary Transport, fallback Transport, onError func(error)) Transport

func File

func File(options FileTransportOptions) Transport

func RecoverTransport

func RecoverTransport(transport Transport) Transport

type TransportPanicError

type TransportPanicError struct {
	Value any
	Stack []byte
}

func (*TransportPanicError) Error

func (e *TransportPanicError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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