logfx

package
v0.6.5 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2025 License: Apache-2.0 Imports: 7 Imported by: 0

README

ajan/logfx

Overview

The logfx package is a configurable logging solution leverages the log/slog of the standard library for structured logging. It includes pretty-printing options and a fx module for the ajan/di package. The package also has extensive tests to ensure reliability and correctness, covering configuration parsing, handler behavior and the custom error formatting logic.

The documentation below provides an overview of the package, its types, functions, and usage examples. For more detailed information, refer to the source code and tests.

Configuration

Configuration struct for the logger:

type Config struct {
	Level      string `conf:"LEVEL"      default:"INFO"`
	PrettyMode bool   `conf:"PRETTY"     default:"true"`
	AddSource  bool   `conf:"ADD_SOURCE" default:"false"`
}

API

NewLogger function

Creates a new slog.Logger object based on the provided configuration.

// func NewLogger(w io.Writer, config *Config) (*slog.Logger, error)

logger, err := logfx.NewLogger(os.Stdout, config)
NewLoggerAsDefault function

Creates a new slog.Logger object based on the provided configuration and makes it default slog instance.

// func NewLoggerAsDefault(w io.Writer, config *Config) (*slog.Logger, error)

logger, err := logfx.NewLoggerAsDefault(os.Stdout, config)
Colored function

Returns a ANSI-colored string for terminal output.

// func Colored(color Color, message string) string

// available colors:
//	ColorReset        ColorDimGray
//	ColorRed          ColorLightRed
//	ColorGreen        ColorLightGreen
//	ColorYellow       ColorLightYellow
//	ColorBlue         ColorLightBlue
//	ColorMagenta      ColorLightMagenta
//	ColorCyan         ColorLightCyan
//	ColorGray         ColorLightGray

fmt.Println(logfx.Colored(logfx.ColorRed, "test"))

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Colored

func Colored(color Color, message string) string

func NewLogger

func NewLogger(w io.Writer, config *Config) (*slog.Logger, error)

func NewLoggerAsDefault

func NewLoggerAsDefault(w io.Writer, config *Config) (*slog.Logger, error)

func ReplacerGenerator

func ReplacerGenerator(prettyMode bool) func([]string, slog.Attr) slog.Attr

func TraceLines

func TraceLines(frames StackTrace) []string

Types

type Color

type Color string
const (
	ColorReset        Color = "\033[0m"
	ColorRed          Color = "\033[31m"
	ColorGreen        Color = "\033[32m"
	ColorYellow       Color = "\033[33m"
	ColorBlue         Color = "\033[34m"
	ColorMagenta      Color = "\033[35m"
	ColorCyan         Color = "\033[36m"
	ColorGray         Color = "\033[37m"
	ColorDimGray      Color = "\033[90m"
	ColorLightRed     Color = "\033[91m"
	ColorLightGreen   Color = "\033[92m"
	ColorLightYellow  Color = "\033[93m"
	ColorLightBlue    Color = "\033[94m"
	ColorLightMagenta Color = "\033[95m"
	ColorLightCyan    Color = "\033[96m"
	ColorLightGray    Color = "\033[97m"
)

type Config

type Config struct {
	Level      string `conf:"LEVEL"      default:"INFO"`
	PrettyMode bool   `conf:"PRETTY"     default:"true"`
	AddSource  bool   `conf:"ADD_SOURCE" default:"false"`
}

type Handler

type Handler struct {
	InnerHandler slog.Handler

	InnerWriter io.Writer
	InnerConfig *Config
}

func NewHandler

func NewHandler(w io.Writer, config *Config) (*Handler, error)

func (*Handler) Enabled

func (h *Handler) Enabled(ctx context.Context, level slog.Level) bool

func (*Handler) Handle

func (h *Handler) Handle(ctx context.Context, rec slog.Record) error

func (*Handler) WithAttrs

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

func (*Handler) WithGroup

func (h *Handler) WithGroup(name string) slog.Handler

type StackTrace

type StackTrace = []uintptr // []runtime.Frame

type StackTracer

type StackTracer interface {
	StackTrace() StackTrace
}

Jump to

Keyboard shortcuts

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