https://github.com/vgarvardt/slogex
Golang log/slog extensions
https://github.com/vgarvardt/slogex
extensions go golang logging testing
Last synced: about 1 year ago
JSON representation
Golang log/slog extensions
- Host: GitHub
- URL: https://github.com/vgarvardt/slogex
- Owner: vgarvardt
- License: apache-2.0
- Created: 2024-01-05T19:37:02.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-04-01T16:44:01.000Z (about 1 year ago)
- Last Synced: 2025-04-26T05:48:08.918Z (about 1 year ago)
- Topics: extensions, go, golang, logging, testing
- Language: Go
- Homepage:
- Size: 99.6 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# slogex
[](https://pkg.go.dev/github.com/vgarvardt/slogex)
[](https://codecov.io/gh/vgarvardt/slogex)
[](https://goreportcard.com/report/github.com/vgarvardt/slogex)
[](https://opensource.org/license/apache-2-0/)
Collection of Golang `log/slog` logger extensions and related wrappers.
## Extensions
- [`github.com/vgarvardt/slogex/observer`](#githubcomvgarvardtslogexobserver) - `slog.Handler` implementation that keeps
log records in memory. Useful for applications that want to test log output. Heavily inspired
by `go.uber.org/zap/zaptest/observer`.
- [`github.com/vgarvardt/slogex/fxlogger`](#githubcomvgarvardtslogexfxlogger) - `go.uber.org/fx/fxevent.Logger`
implementation.
## Examples
### `github.com/vgarvardt/slogex/observer`
```go
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`
```go
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")),
}
}),
}
}
```