package slog
import (
"context"
"errors"
)
func NewMultiHandler (handlers ...Handler ) *MultiHandler {
h := make ([]Handler , len (handlers ))
copy (h , handlers )
return &MultiHandler {multi : h }
}
type MultiHandler struct {
multi []Handler
}
func (h *MultiHandler ) Enabled (ctx context .Context , l Level ) bool {
for i := range h .multi {
if h .multi [i ].Enabled (ctx , l ) {
return true
}
}
return false
}
func (h *MultiHandler ) Handle (ctx context .Context , r Record ) error {
var errs []error
for i := range h .multi {
if h .multi [i ].Enabled (ctx , r .Level ) {
if err := h .multi [i ].Handle (ctx , r .Clone ()); err != nil {
errs = append (errs , err )
}
}
}
return errors .Join (errs ...)
}
func (h *MultiHandler ) WithAttrs (attrs []Attr ) Handler {
handlers := make ([]Handler , 0 , len (h .multi ))
for i := range h .multi {
handlers = append (handlers , h .multi [i ].WithAttrs (attrs ))
}
return &MultiHandler {multi : handlers }
}
func (h *MultiHandler ) WithGroup (name string ) Handler {
handlers := make ([]Handler , 0 , len (h .multi ))
for i := range h .multi {
handlers = append (handlers , h .multi [i ].WithGroup (name ))
}
return &MultiHandler {multi : handlers }
}
The pages are generated with Golds v0.8.3-preview . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .