github.com/anacrolix/torrent@v1.61.0/cmd/torrent/slog.go (about) 1 package main 2 3 import ( 4 "context" 5 "log/slog" 6 ) 7 8 // Adds an extra level filter check on top of an existing Handler. We can't embed the Handler 9 // because that gives an escape hatch. 10 type slogLevelFilterHandler struct { 11 minLevel slog.Level 12 inner slog.Handler 13 } 14 15 func (me slogLevelFilterHandler) Enabled(ctx context.Context, level slog.Level) bool { 16 return level >= me.minLevel && me.inner.Enabled(ctx, level) 17 } 18 19 func (me slogLevelFilterHandler) Handle(ctx context.Context, record slog.Record) error { 20 return me.inner.Handle(ctx, record) 21 } 22 23 func (me slogLevelFilterHandler) WithAttrs(attrs []slog.Attr) slog.Handler { 24 return slogLevelFilterHandler{me.minLevel, me.inner.WithAttrs(attrs)} 25 } 26 27 func (me slogLevelFilterHandler) WithGroup(name string) slog.Handler { 28 return slogLevelFilterHandler{me.minLevel, me.inner.WithGroup(name)} 29 } 30 31 var _ slog.Handler = slogLevelFilterHandler{}