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{}