slogmock

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2024 License: MIT Imports: 4 Imported by: 0

README

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.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MockHandler

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

func (*MockHandler) Enabled

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

func (*MockHandler) Handle

func (h *MockHandler) Handle(ctx context.Context, record slog.Record) error

func (*MockHandler) WithAttrs

func (h *MockHandler) WithAttrs(attrs []slog.Attr) slog.Handler

func (*MockHandler) WithGroup

func (h *MockHandler) WithGroup(name string) slog.Handler

type Option

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

func (Option) NewMockHandler

func (o Option) NewMockHandler() slog.Handler

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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