/slogex

Golang log/slog extensions

Primary LanguageGoApache License 2.0Apache-2.0

slogex

GoDev Coverage Status ReportCard License

Collection of Golang log/slog logger extensions and related wrappers.

Extensions

Examples

github.com/vgarvardt/slogex/observer

package something_test

import (
    "log/slog"
    "testing"

    "github.com/vgarvardt/slogex/observer"
)

func TestSomeLogs(t *testing.T) {
    handler, logs := observer.New(nil)

    logger := slog.New(handler).With(slog.Int("i", 1))
    logger.Info("foo")

    loggerRecords := logs.All()
    for _, r := range loggerRecords {
        t.Log(r.Record.Level, r.Record.Message, r.Attrs)
    }
}

github.com/vgarvardt/slogex/fxlogger

package main

import (
    "log/slog"

    "go.uber.org/fx"
    "go.uber.org/fx/fxevent"

    "github.com/vgarvardt/slogex/fxlogger"
)

func FxOptions() []fx.Option {
    return []fx.Option{
        fx.WithLogger(func(logger *slog.Logger) fxevent.Logger {
            return &fxlogger.Logger{
                Logger: logger.With(slog.String("source", "fx")),
            }
        }),
    }
}