v1.4.0
This release dramatically improves interoperability with Go's log/slog
package. In particular, logr.NewContext
and logr.NewContextWithSlogLogger
use the same context key, which allows logr.FromContext
and logr.FromContextAsSlogLogger
to return logr.Logger
or *slog.Logger
respectively, including transparently converting each to the other as needed.
Functions logr/slogr.NewLogr
and logr/slogr.ToSlogHandler
have been superceded by logr.FromSlogHandler
and logr.ToSlogHandler
respectively, and type logr/slogr.SlogSink
has been superceded by logr.SlogSink
. All of the old names in logr/slogr
remain, for compatibility.
Package logr/funcr
now supports logr.SlogSink
, meaning that it's output passes all but one of the Slog conformance tests (that exception being that funcr
handles the timestamp itself).
Users who have a logr.Logger
and need a *slog.Logger
can call slog.New(logr.ToSlogHandler(...))
and all output will go through the same stack.
Users who have a *slog.Logger
or slog.Handler
can call logr.FromSlogHandler(...)
and all output will go through the same stack.
What's Changed
- slog context support by @pohly in #237
- slog support: fix WithGroup + WithValues combination by @pohly in #243
- Add tests for context with slog by @thockin in #246
- sloghandler: unnamed groups should be inlined by @thockin in #245
- Add SlogSink support to funcr by @thockin in #241
- funcr: Add LogInfoLevel Option to skip logging level in the info log by @spacewander in #240
New Contributors
- @spacewander made their first contribution in #240
Full Changelog: v1.3.0...v1.4.0