From 7a3834f9b3670792499ec4fc7e4610a22c8a5936 Mon Sep 17 00:00:00 2001 From: Jason Hall Date: Mon, 5 Feb 2024 17:08:59 -0500 Subject: [PATCH] slog: Don't log if not enabled at level (#103) * slog: Don't log if not enabled at level * Update logger_121.go * chore: gofmt --------- Co-authored-by: Ayman Bagabas --- logger.go | 6 ++---- logger_121.go | 9 ++++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/logger.go b/logger.go index 3249c1a..046da40 100644 --- a/logger.go +++ b/logger.go @@ -15,10 +15,8 @@ import ( "github.com/muesli/termenv" ) -var ( - // ErrMissingValue is returned when a key is missing a value. - ErrMissingValue = fmt.Errorf("missing value") -) +// ErrMissingValue is returned when a key is missing a value. +var ErrMissingValue = fmt.Errorf("missing value") // LoggerOption is an option for a logger. type LoggerOption = func(*Logger) diff --git a/logger_121.go b/logger_121.go index dc1b14d..6930efd 100644 --- a/logger_121.go +++ b/logger_121.go @@ -5,10 +5,9 @@ package log import ( "context" + "log/slog" "runtime" "sync/atomic" - - "log/slog" ) // Enabled reports whether the logger is enabled for the given level. @@ -21,7 +20,11 @@ func (l *Logger) Enabled(_ context.Context, level slog.Level) bool { // Handle handles the Record. It will only be called if Enabled returns true. // // Implements slog.Handler. -func (l *Logger) Handle(_ context.Context, record slog.Record) error { +func (l *Logger) Handle(ctx context.Context, record slog.Record) error { + if !l.Enabled(ctx, record.Level) { + return nil + } + fields := make([]interface{}, 0, record.NumAttrs()*2) record.Attrs(func(a slog.Attr) bool { fields = append(fields, a.Key, a.Value.String())