Skip to content

Commit 7fddfa9

Browse files
authored
fix: log arguments are not formatted (#180)
This fixes a problem with unformatted Sprintf-style strings in the logs. Added tests to verify logs being correctly formatted.
1 parent af99d9c commit 7fddfa9

File tree

2 files changed

+57
-3
lines changed

2 files changed

+57
-3
lines changed

logger.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ func newSlogToRestyAdapter(logger *slog.Logger) *slogToRestyAdapter {
3535
}
3636

3737
func (l *slogToRestyAdapter) Errorf(format string, v ...interface{}) {
38-
l.logger.Error(format, v...)
38+
l.logger.Error(fmt.Sprintf(format, v...))
3939
}
4040

4141
func (l *slogToRestyAdapter) Warnf(format string, v ...interface{}) {
42-
l.logger.Warn(format, v...)
42+
l.logger.Warn(fmt.Sprintf(format, v...))
4343
}
4444

4545
func (l *slogToRestyAdapter) Debugf(format string, v ...interface{}) {
46-
l.logger.Debug(format, v...)
46+
l.logger.Debug(fmt.Sprintf(format, v...))
4747
}
4848

4949
// slogToLoggerAdapter adapts a slog.Logger to our Logger interface.

logger_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package flagsmith
2+
3+
import (
4+
"bytes"
5+
"log/slog"
6+
"testing"
7+
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestSlogToRestyAdapter_Errorf(t *testing.T) {
12+
var buf bytes.Buffer
13+
logger := slog.New(slog.NewTextHandler(&buf, &slog.HandlerOptions{
14+
Level: slog.LevelDebug,
15+
}))
16+
17+
adapter := newSlogToRestyAdapter(logger)
18+
19+
adapter.Errorf("test error: %s", "bad")
20+
21+
output := buf.String()
22+
assert.Contains(t, output, "test error: bad")
23+
assert.Contains(t, output, "level=ERROR")
24+
}
25+
26+
func TestSlogToRestyAdapter_Warnf(t *testing.T) {
27+
var buf bytes.Buffer
28+
logger := slog.New(slog.NewTextHandler(&buf, &slog.HandlerOptions{
29+
Level: slog.LevelDebug,
30+
}))
31+
32+
adapter := newSlogToRestyAdapter(logger)
33+
34+
adapter.Warnf("test warning: %s: %d", "warn", 42)
35+
36+
output := buf.String()
37+
assert.Contains(t, output, "test warning: warn: 42")
38+
assert.Contains(t, output, "level=WARN")
39+
}
40+
41+
func TestSlogToRestyAdapter_Debugf(t *testing.T) {
42+
var buf bytes.Buffer
43+
logger := slog.New(slog.NewTextHandler(&buf, &slog.HandlerOptions{
44+
Level: slog.LevelDebug,
45+
}))
46+
47+
adapter := newSlogToRestyAdapter(logger)
48+
49+
adapter.Debugf("debug info: %s", "details")
50+
51+
output := buf.String()
52+
assert.Contains(t, output, "debug info: details")
53+
assert.Contains(t, output, "level=DEBUG")
54+
}

0 commit comments

Comments
 (0)