|
| 1 | +// Copyright (c) The Thanos Authors. |
| 2 | +// Licensed under the Apache License 2.0. |
| 3 | + |
| 4 | +package logutil |
| 5 | + |
| 6 | +import ( |
| 7 | + "context" |
| 8 | + "log/slog" |
| 9 | + "testing" |
| 10 | + |
| 11 | + "github.com/go-kit/log/level" |
| 12 | + "github.com/stretchr/testify/require" |
| 13 | + "github.com/thanos-io/thanos/pkg/logging" |
| 14 | +) |
| 15 | + |
| 16 | +func Test_GoKitLogToSlog(t *testing.T) { |
| 17 | + ctx := context.Background() |
| 18 | + logLevels := []string{"debug", "info", "warn", "error"} |
| 19 | + slogLevels := []slog.Level{slog.LevelDebug, slog.LevelInfo, slog.LevelWarn, slog.LevelError} |
| 20 | + |
| 21 | + for _, logFormat := range []string{"logfmt", "json"} { |
| 22 | + for i, lv := range logLevels { |
| 23 | + logger := logging.NewLogger(lv, logFormat, "test") |
| 24 | + |
| 25 | + slog := GoKitLogToSlog(logger) |
| 26 | + for j, slogLv := range slogLevels { |
| 27 | + if i <= j { |
| 28 | + t.Logf("[logFormat: %v, go-kit log level: %v, slog level: %v] slog should be enabled", logFormat, lv, slogLv) |
| 29 | + require.True(t, slog.Enabled(ctx, slogLv)) |
| 30 | + } else { |
| 31 | + t.Logf("[logFormat: %v, go-kit log level: %v, slog level: %v] slog should be disabled", logFormat, lv, slogLv) |
| 32 | + require.False(t, slog.Enabled(ctx, slogLv)) |
| 33 | + } |
| 34 | + |
| 35 | + switch lv { |
| 36 | + case "debug": |
| 37 | + level.Debug(logger).Log("msg", "message", "debug", lv) |
| 38 | + slog.Debug("message", "debug", lv) |
| 39 | + case "info": |
| 40 | + level.Info(logger).Log("msg", "message", "info", lv) |
| 41 | + slog.Info("message", "info", lv) |
| 42 | + case "warn": |
| 43 | + level.Warn(logger).Log("msg", "message", "warn", lv) |
| 44 | + slog.Warn("message", "warn", lv) |
| 45 | + case "error": |
| 46 | + level.Error(logger).Log("msg", "message", "error", lv) |
| 47 | + slog.Error("message", "error", lv) |
| 48 | + } |
| 49 | + } |
| 50 | + } |
| 51 | + } |
| 52 | +} |
0 commit comments