GitHub - samber/slog-mock: 🚨 slog: mock handler (original) (raw)

slog: Mock handler

tag Go Version GoDoc Build Status Go report Coverage Contributors License

A mock Handler for slog Go library. Used for testing purpose.

See also:

HTTP middlewares:

Loggers:

Log sinks:

🚀 Install

go get github.com/samber/slog-mock

Compatibility: go >= 1.21

No breaking changes will be made to exported APIs before v1.0.0.

💡 Usage

GoDoc: https://pkg.go.dev/github.com/samber/slog-mock

Handler options

type Option struct { // optional Enabled func(ctx context.Context, level slog.Level) bool // optional Handle func(ctx context.Context, record slog.Record) error }

Example

import ( "fmt" "net/http" "time"

slogmock "github.com/samber/slog-mock"

"log/slog"

)

func main() { logger := slog.New( slogmock.Option{ Handle: func(ctx context.Context, record slog.Record) error { // simulate slowdown then error from log sink time.Sleep(100*time.Millisecond) panic("could not connect to datadog") }, }.NewMockHandler(), ) logger = logger.With("release", "v1.0.0")

logger.
    With(
        slog.Group("user",
            slog.String("id", "user-123"),
            slog.Time("created_at", time.Now()),
        ),
    ).
    With("error", fmt.Errorf("an error")).
    Error("a message", slog.Int("count", 1))

}

🤝 Contributing

Don't hesitate ;)

Install some dev dependencies

make tools

Run tests

make test

or

make watch-test

👤 Contributors

Contributors

💫 Show your support

Give a ⭐️ if this project helped you!

GitHub Sponsors

📝 License

Copyright © 2023 Samuel Berthe.

This project is MIT licensed.