Add log.ToLogger and log.ToSlogger helper functions (#3629)

This commit is contained in:
Miccah
2024-11-19 14:57:08 -08:00
committed by GitHub
parent 1018e0095f
commit fe43c5dba4
2 changed files with 58 additions and 0 deletions
+12
View File
@@ -4,6 +4,8 @@ import (
"errors"
"fmt"
"io"
"log"
"log/slog"
"time"
"github.com/TheZeroSlave/zapsentry"
@@ -184,6 +186,16 @@ func WithGlobalRedaction() func(*sinkConfig) {
}
}
// ToLogger converts the logr.Logger into a legacy *log.Logger.
func ToLogger(l logr.Logger) *log.Logger {
return slog.NewLogLogger(logr.ToSlogHandler(l), slog.LevelInfo)
}
// ToSlogger converts the logr.Logger into a *slog.Logger.
func ToSlogger(l logr.Logger) *slog.Logger {
return slog.New(logr.ToSlogHandler(l))
}
// firstErrorFunc is a helper function that returns a function that executes
// all provided args and returns the first error, if any.
func firstErrorFunc(fs ...func() error) func() error {
+46
View File
@@ -290,6 +290,52 @@ func TestGlobalRedaction_JSON(t *testing.T) {
)
}
func TestToLogger(t *testing.T) {
var jsonBuffer bytes.Buffer
l, flush := New("service-name",
WithJSONSink(&jsonBuffer),
)
logger := ToLogger(l)
logger.Println("yay")
assert.Nil(t, flush())
var parsedJSON map[string]any
assert.Nil(t, json.Unmarshal(jsonBuffer.Bytes(), &parsedJSON))
assert.NotEmpty(t, parsedJSON["ts"])
delete(parsedJSON, "ts")
delete(parsedJSON, "caller") // log.Logger adds a "caller" field
assert.Equal(t,
map[string]any{
"level": "info-0",
"logger": "service-name",
"msg": "yay",
},
parsedJSON,
)
}
func TestToSlogger(t *testing.T) {
var jsonBuffer bytes.Buffer
l, flush := New("service-name", WithJSONSink(&jsonBuffer))
logger := ToSlogger(l)
logger.Info("yay")
assert.Nil(t, flush())
var parsedJSON map[string]any
assert.Nil(t, json.Unmarshal(jsonBuffer.Bytes(), &parsedJSON))
assert.NotEmpty(t, parsedJSON["ts"])
delete(parsedJSON, "ts")
delete(parsedJSON, "caller") // slog.Logger adds a "caller" field
assert.Equal(t,
map[string]any{
"level": "info-0",
"logger": "service-name",
"msg": "yay",
},
parsedJSON,
)
}
func BenchmarkLoggerRedact(b *testing.B) {
msg := "this is a message with 'foo' in it"
logKvps := []any{"key", "value", "foo", "bar", "bar", "baz", "longval", "84hblnqwp97ewilbgoab8fhqlngahs6dl3i269haa"}