Categorygithub.com/alchemy/rotoslog
repositorypackage
0.3.0
Repository: https://github.com/alchemy/rotoslog.git
Documentation: pkg.go.dev

# README

rotoslog

This package implements a simple log file rotator handler for slog. It works out of the box using the standard JSONHandler (default) and TextHandler for output formatting, but supports custom handlers.

Example using default configuration:

package main

import (
    "log/slog"

    "github/alchemy/rotoslog"
)

func init() {
	h, err := rotoslog.NewHandler(rotoslog.FilePrefix("msg-"))
	if err != nil {
		panic(err)
	}
	logger := slog.New(h)
	slog.SetDefault(logger)
}

Example using custom slog-formatter handler:

package main

import (
	"fmt"
	"io"
	"log/slog"
	"os"
	"testing"

    "github/alchemy/rotoslog"

	formatter "github.com/samber/slog-formatter"
)

func init() {
	formatter1 := formatter.FormatByKey("pwd", func(v slog.Value) slog.Value {
		return slog.StringValue("***********")
	})
	formatter2 := formatter.ErrorFormatter("error")

	builder := func(w io.Writer, opts *slog.HandlerOptions) slog.Handler {
		formattingMiddleware := formatter.NewFormatterHandler(formatter1, formatter2)
		textHandler := NewTextHandler(w, opts)
		return formattingMiddleware(textHandler)
	}
	h, err := rotoslog.NewHandler(rotoslog.HandlerBuilder(builder))
	if err != nil {
		panic(err)
	}
	logger := slog.New(h)
	slog.SetDefault(logger)
}