Collection of Golang log/slog
logger extensions and related wrappers.
github.com/vgarvardt/slogex/observer
-slog.Handler
implementation that keeps log records in memory. Useful for applications that want to test log output. Heavily inspired bygo.uber.org/zap/zaptest/observer
.github.com/vgarvardt/slogex/fxlogger
-go.uber.org/fx/fxevent.Logger
implementation.
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)
}
}
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")),
}
}),
}
}