mirror of
https://github.com/certimate-go/certimate.git
synced 2026-10-13 08:56:21 +08:00
48 lines
949 B
Go
48 lines
949 B
Go
package logging
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
)
|
|
|
|
var _ slog.Handler = (*NamedHandler)(nil)
|
|
|
|
type NamedHandler struct {
|
|
handler slog.Handler
|
|
namespace string
|
|
}
|
|
|
|
func NewNamedHandler(handler slog.Handler, namespace string) *NamedHandler {
|
|
h := &NamedHandler{
|
|
handler: handler,
|
|
namespace: namespace,
|
|
}
|
|
|
|
return h
|
|
}
|
|
|
|
func (h *NamedHandler) Enabled(ctx context.Context, level slog.Level) bool {
|
|
return h.handler.Enabled(ctx, level)
|
|
}
|
|
|
|
func (h *NamedHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
|
|
return &NamedHandler{
|
|
namespace: h.namespace,
|
|
handler: h.handler.WithAttrs(attrs),
|
|
}
|
|
}
|
|
|
|
func (h *NamedHandler) WithGroup(name string) slog.Handler {
|
|
return &NamedHandler{
|
|
namespace: h.namespace,
|
|
handler: h.handler.WithGroup(name),
|
|
}
|
|
}
|
|
|
|
func (h *NamedHandler) Handle(ctx context.Context, r slog.Record) error {
|
|
if h.namespace != "" {
|
|
r.Message = h.namespace + ": " + r.Message
|
|
}
|
|
return h.handler.Handle(ctx, r)
|
|
}
|