multislog

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2024 License: MIT Imports: 3 Imported by: 0

README

multislog

A package that wraps, in a single slog.Handler, an array of other handlers.

Example usage:

package main

import (
	"log/slog"
	"os"
	"strings"

	"github.com/alchemy/multislog"
)

func main() {
	opts := &slog.HandlerOptions{Level: slog.LevelInfo}
	stdoutHandler := slog.NewTextHandler(os.Stdout, opts)
	sb := &strings.Builder{}
	stringHandler := slog.NewTextHandler(sb, opts)
	handler := multislog.NewHandler(stdoutHandler, stringHandler)
	logger := slog.New(handler)
	logger.Debug("debug message")
	logger.Info("info message")
	logger.Warn("warn message")
	logger.Error("error message")
}

Documentation

Overview

Example
package main

import (
	"log"
	"log/slog"
	"os"
	"strings"
	"time"

	"github.com/alchemy/multislog"
)

func main() {
	t, err := time.Parse("2006-01-02 15:04:05", "2009-11-10 23:00:00")
	if err != nil {
		log.Fatalln(err)
	}
	opts := &slog.HandlerOptions{
		Level: slog.LevelInfo,
		ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
			if a.Key == slog.TimeKey {
				return slog.Time(slog.TimeKey, t)
			}
			return a
		},
	}

	stdoutHandler := slog.NewTextHandler(os.Stdout, opts)
	sb := &strings.Builder{}
	stringHandler := slog.NewTextHandler(sb, opts)
	handler := multislog.NewHandler(stdoutHandler, stringHandler)
	logger := slog.New(handler)
	logger.Debug("debug message")
	logger.Info("info message")
	logger.Warn("warn message")
	logger.Error("error message")
}
Output:

time=2009-11-10T23:00:00.000Z level=INFO msg="info message"
time=2009-11-10T23:00:00.000Z level=WARN msg="warn message"
time=2009-11-10T23:00:00.000Z level=ERROR msg="error message"

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewHandler

func NewHandler(handlers ...slog.Handler) slog.Handler

NewHandler creates a new slog.Handler which combines all the handlers passed as arguments in a single one.

Types

This section is empty.

Jump to

Keyboard shortcuts

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