// Copied from https://pkg.go.dev/log/slog#Handler
package log import ( ) // A LevelHandler wraps a Handler with an Enabled method // that returns false for levels below a minimum. type LevelHandler struct { level slog.Leveler handler slog.Handler } // NewLevelHandler returns a LevelHandler with the given level. // All methods except Enabled delegate to h. func ( slog.Leveler, slog.Handler) *LevelHandler { // Optimization: avoid chains of LevelHandlers. if , := .(*LevelHandler); { = .Handler() } return &LevelHandler{, } } // Enabled implements Handler.Enabled by reporting whether // level is at least as large as h's level. func ( *LevelHandler) ( context.Context, slog.Level) bool { return >= .level.Level() } // Handle implements Handler.Handle. func ( *LevelHandler) ( context.Context, slog.Record) error { return .handler.Handle(, ) } // WithAttrs implements Handler.WithAttrs. func ( *LevelHandler) ( []slog.Attr) slog.Handler { return NewLevelHandler(.level, .handler.WithAttrs()) } // WithGroup implements Handler.WithGroup. func ( *LevelHandler) ( string) slog.Handler { return NewLevelHandler(.level, .handler.WithGroup()) } // Handler returns the Handler wrapped by h. func ( *LevelHandler) () slog.Handler { return .handler }