slogloki

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2023 License: MIT Imports: 9 Imported by: 0

README

slog: Loki handler

tag Go Version GoDoc Build Status Go report Coverage Contributors License

A Loki Handler for slog Go library.

See also:

🚀 Install

go get github.com/samber/slog-loki

Compatibility: go >= 1.21

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

💡 Usage

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

Handler options
type Option struct {
	// log level (default: debug)
	Level slog.Leveler

	// loki endpoint
	Endpoint string
	// log batching
	BatchWait          time.Duration
	BatchEntriesNumber int
}

Attributes will be injected in log payload.

Attributes added to records are not accepted.

Example
import (
	slogloki "github.com/samber/slog-loki"
	"log/slog"
)

func main() {
	endpoint := "http://localhost:3100"

	logger := slog.New(slogloki.Option{Level: slog.LevelDebug, Endpoint: endpoint}.NewLokiHandler())
    logger = logger.
        With("environment", "dev").
        With("release", "v1.0.0")

    // log error
    logger.Error("caramba!")

    // log user signup
    logger.Info("user registration")
}

🤝 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 LokiHandler

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

func (*LokiHandler) Enabled

func (h *LokiHandler) Enabled(_ context.Context, level slog.Level) bool

func (*LokiHandler) Handle

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

func (*LokiHandler) WithAttrs

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

func (*LokiHandler) WithGroup

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

type Option

type Option struct {
	// log level (default: debug)
	Level slog.Leveler

	// loki endpoint
	Endpoint string
	// log batching
	BatchWait          time.Duration
	BatchEntriesNumber int
	// contains filtered or unexported fields
}

func (Option) NewLokiHandler

func (o Option) NewLokiHandler() slog.Handler

@TODO: creating a promptail client at each `NewLokiHandler` call may lead to connection leak when chaining many operations: `logger.With(...).With(...).With(...).With(...)`

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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