Fix slog nil pointer error (#3563)

The problem caused by the mistake in the newLogger function. The nil value is returned even with the valid log format.

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>
This commit is contained in:
Maksim Nabokikh
2024-06-03 21:23:14 +02:00
committed by GitHub
parent 9769f9b462
commit 203b084e17
2 changed files with 31 additions and 2 deletions
+2 -2
View File
@@ -520,11 +520,11 @@ func newLogger(level slog.Level, format string) (*slog.Logger, error) {
var handler slog.Handler
switch strings.ToLower(format) {
case "", "text":
slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{
handler = slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{
Level: level,
})
case "json":
slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{
handler = slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{
Level: level,
})
default:
+29
View File
@@ -0,0 +1,29 @@
package main
import (
"log/slog"
"testing"
"github.com/stretchr/testify/require"
)
func TestNewLogger(t *testing.T) {
t.Run("JSON", func(t *testing.T) {
logger, err := newLogger(slog.LevelInfo, "json")
require.NoError(t, err)
require.NotEqual(t, (*slog.Logger)(nil), logger)
})
t.Run("Text", func(t *testing.T) {
logger, err := newLogger(slog.LevelError, "text")
require.NoError(t, err)
require.NotEqual(t, (*slog.Logger)(nil), logger)
})
t.Run("Unknown", func(t *testing.T) {
logger, err := newLogger(slog.LevelError, "gofmt")
require.Error(t, err)
require.Equal(t, "log format is not one of the supported values (json, text): gofmt", err.Error())
require.Equal(t, (*slog.Logger)(nil), logger)
})
}