From ad7b5d56ba057034f57932640135276784f4b9db Mon Sep 17 00:00:00 2001 From: turk Date: Sun, 8 Jun 2025 23:55:42 -0600 Subject: [PATCH] remove old handler --- handler.go | 113 ------------------------------------------------ handler_test.go | 45 ------------------- 2 files changed, 158 deletions(-) delete mode 100644 handler.go delete mode 100644 handler_test.go diff --git a/handler.go b/handler.go deleted file mode 100644 index 4a64179..0000000 --- a/handler.go +++ /dev/null @@ -1,113 +0,0 @@ -package log - -import ( - "context" - "fmt" - "log/slog" - "os" - "path/filepath" - "runtime" - "time" -) - -var handlerLevel slog.Level - -var ( - colorReset = "\033[0m" - colorGreyDark = "\033[90m" -) - -type SlogHandler struct { - level slog.Level - attrs []slog.Attr - group string -} - -func (h *SlogHandler) Handle(ctx context.Context, r slog.Record) error { - _, noColor := os.LookupEnv("NO_COLOR") - - var color string - switch r.Level { - case slog.LevelDebug: - color = "\033[36m" - case slog.LevelInfo: - color = "\033[32m" - case slog.LevelWarn: - color = "\033[33m" - case slog.LevelError: - color = "\033[31m" - default: - color = colorReset - } - source := "" - if handlerLevel == slog.LevelDebug { - pc := make([]uintptr, 10) - n := runtime.Callers(4, pc) - frames := runtime.CallersFrames(pc[:n]) - frame, _ := frames.Next() - if !noColor { - source = fmt.Sprintf(" %s%s:%d%s", colorGreyDark, filepath.Base(frame.File), frame.Line, colorReset) - } else { - source = fmt.Sprintf(" %s:%d", filepath.Base(frame.File), frame.Line) - } - } - timestamp := r.Time.UTC().Format(time.RFC3339) - if !noColor { - timestamp = fmt.Sprintf("%s%s%s", colorGreyDark, timestamp, colorReset) - } - - level := fmt.Sprintf("%-5s", r.Level.String()) - msg := r.Message - attrs := "" - - r.Attrs(func(a slog.Attr) bool { - if !noColor { - attrs += fmt.Sprintf(" %s%s=%s%v", colorGreyDark, a.Key, colorReset, a.Value) - } else { - attrs += fmt.Sprintf(" %s=%v", a.Key, a.Value) - } - return true - }) - - var destination *os.File - if r.Level == slog.LevelError { - destination = os.Stderr - } else { - destination = os.Stdout - } - if !noColor { - fmt.Fprintf(destination, "%s %s%s%s%s %q%s\n", - timestamp, color, level, colorReset, source, msg, attrs, - ) - } else { - fmt.Fprintf(destination, "%s %s %s %q%s\n", - timestamp, level, source, msg, attrs, - ) - } - return nil -} - -func (h *SlogHandler) WithAttrs(attrs []slog.Attr) slog.Handler { - return &SlogHandler{ - level: h.level, - attrs: attrs, - } -} - -// TODO this is no-op -func (h *SlogHandler) WithGroup(name string) slog.Handler { - return h -} - -func (h *SlogHandler) Enabled(ctx context.Context, level slog.Level) bool { - return level >= h.level -} - -// Init puts a pretty custom handler on otherwise standard log/slog. -// WARN:this is the old way of doing it, not preferred. (Why? Delete?) -func Init(level slog.Level) { - handlerLevel = level - slog.SetDefault(slog.New(&SlogHandler{ - level: level, - })) -} diff --git a/handler_test.go b/handler_test.go deleted file mode 100644 index 1ea9209..0000000 --- a/handler_test.go +++ /dev/null @@ -1,45 +0,0 @@ -package log - -import ( - "log/slog" - "os" - "testing" -) - -func TestSlogHandler(t *testing.T) { - - t.Run("debug color", func(t *testing.T) { - Init(slog.LevelDebug) - slog.Debug("debug message", "key", "value", "key2", "value2") - slog.Info("info message", "key", "value", "key2", "value2") - slog.Warn("warn message", "key", "value", "key2", "value2") - slog.Error("error message", "key", "value", "key2", "value2") - }) - - t.Run("info color", func(t *testing.T) { - Init(slog.LevelInfo) - slog.Debug("debug message", "key", "value", "key2", "value2") - slog.Info("info message", "key", "value", "key2", "value2") - slog.Warn("warn message", "key", "value", "key2", "value2") - slog.Error("error message", "key", "value", "key2", "value2") - }) - - t.Run("debug no color", func(t *testing.T) { - os.Setenv("NO_COLOR", "true") - Init(slog.LevelDebug) - slog.Debug("debug message", "key", "value", "key2", "value2") - slog.Info("info message", "key", "value", "key2", "value2") - slog.Warn("warn message", "key", "value", "key2", "value2") - slog.Error("error message", "key", "value", "key2", "value2") - }) - - t.Run("info no color", func(t *testing.T) { - os.Setenv("NO_COLOR", "true") - Init(slog.LevelInfo) - slog.Debug("debug message", "key", "value", "key2", "value2") - slog.Info("info message", "key", "value", "key2", "value2") - slog.Warn("warn message", "key", "value", "key2", "value2") - slog.Error("error message", "key", "value", "key2", "value2") - }) - -}