sloglm

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2023 License: MIT Imports: 14 Imported by: 0

README

sloglm

A Go Structured Logging Hanlder for sllm

Documentation

Overview

Example
t := time.Date(2023, 05, 04, 20, 30, 40, 0, time.UTC)
logger := slog.New(NewHandler(os.Stdout, nil, nil))
logger.Info("A `level` message `at` `about` and `.about.bar`",
	"level", slog.LevelInfo,
	"at", t,
	"level", 7,
	"about", slog.GroupValue(
		slog.Bool("foo", true),
		slog.Int("bar", 4711),
		slog.Float64("baz", 3.14159),
	),
)
Output:

A `level:INFO` message `at:2023-05-04T20:30:40Z` `about:[foo=true bar=4711 baz=3.14159]` and `.about.bar:4711` (level=7)
Example (CompareOutputs)
const form = "added `count` x `item` to shopping cart by `user`"
args := []any{"count", 7, "item", "Hat", "user", "John Doe"}
opts := slog.HandlerOptions{Level: &slog.LevelVar{}, AddSource: true}

logger := slog.New(slog.NewTextHandler(os.Stdout, &opts))
fmt.Println("Std Text:")
logger.Info(form, args...)
logger.WithGroup("gruppe").Info(form, args...)
logger = slog.New(slog.NewJSONHandler(os.Stdout, &opts))
fmt.Println("Std JSON:")
logger.Info(form, args...)
logger.WithGroup("gruppe").Info(form, args...)

logger = slog.New(NewHandler(
	os.Stdout,
	NewHeader(sllm.Tdefault|sllm.Tyear).Append,
	&opts,
))
fmt.Println("sllm:")
logger.Info(form, args...)
logger.WithGroup("gruppe").Info(form, args...)
// DISABLED Output:
// time=2023-05-06T13:24:00.476+02:00 level=INFO msg="added `count` x `item` to shopping cart by `user`" count=7 item=Hat user="John Doe"
// {"time":"2023-05-06T13:24:00.476762195+02:00","level":"INFO","msg":"added `count` x `item` to shopping cart by `user`","count":7,"item":"Hat","user":"John Doe"}
// 2023-05-06 Sa 13:24:00 INFO	added `count:7` x `item:Hat` to shopping cart by `user:John Doe`
Output:

Index

Examples

Constants

This section is empty.

Variables

View Source
var DefaultOptions = slog.HandlerOptions{
	Level: &slog.LevelVar{},
}

Functions

func ParseTS

func ParseTS(b []byte, tref time.Time) (t time.Time, n int, err error)
Example
tref := time.Date(2006, time.November, 12, 0, 0, 0, 0, time.UTC)
t, n, err := ParseTS([]byte("2006-11-12 Mo 15:24:35.987654-07"), tref)
fmt.Println(n, t, err)
Output:

32 2006-11-12 15:24:35.987654 -0700 -0700 <nil>

func ParseTSString

func ParseTSString(s string, tref time.Time) (t time.Time, n int, err error)

Types

type Handler

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

func NewHandler

func NewHandler(w io.Writer, header HeaderFunc, opts *slog.HandlerOptions) *Handler

func (*Handler) Enabled

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

func (*Handler) Handle

func (h *Handler) Handle(ctx context.Context, r slog.Record) (err 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 Header struct {
	// contains filtered or unexported fields
}

func NewHeader

func NewHeader(t sllm.TimeFormat) *Header

func (*Header) Append

func (hdr *Header) Append(w []byte, r slog.Record) ([]byte, error)

type HeaderFunc

type HeaderFunc func([]byte, slog.Record) ([]byte, error)

func DefaultHeader

func DefaultHeader() HeaderFunc

Jump to

Keyboard shortcuts

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