Closed as not planned
Description
What version of Go are you using (go version
)?
$ go version go version go1.24.1 darwin/arm64
Does this issue reproduce with the latest release?
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env AR='ar' CC='cc' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_ENABLED='1' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' CXX='c++' GCCGO='gccgo' GO111MODULE='' GOARCH='arm64' GOARM64='v8.0' GOAUTH='netrc' GOBIN='' GOCACHE='/Users/andig/Library/Caches/go-build' GOCACHEPROG='' GODEBUG='' GOENV='/Users/andig/Library/Application Support/go/env' GOEXE='' GOEXPERIMENT='' GOFIPS140='off' GOFLAGS='' GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/sv/rs_453y57xj86xsbz3kw1mbc0000gn/T/go-build460389641=/tmp/go-build -gno-record-gcc-switches -fno-common' GOHOSTARCH='arm64' GOHOSTOS='darwin' GOINSECURE='' GOMOD='/Users/andig/htdocs/slog/go.mod' GOMODCACHE='/Users/andig/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='darwin' GOPATH='/Users/andig/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/opt/homebrew/Cellar/go/1.24.1/libexec' GOSUMDB='sum.golang.org' GOTELEMETRY='on' GOTELEMETRYDIR='/Users/andig/Library/Application Support/go/telemetry' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/opt/homebrew/Cellar/go/1.24.1/libexec/pkg/tool/darwin_arm64' GOVCS='' GOVERSION='go1.24.1' GOWORK='' PKG_CONFIG='pkg-config' GOROOT/bin/go version: go version go1.24.1 darwin/arm64 GOROOT/bin/go tool compile -V: compile version go1.24.1 uname -v: Darwin Kernel Version 24.3.0: Thu Jan 2 20:24:06 PST 2025; root:xnu-11215.81.4~3/RELEASE_ARM64_T8103 ProductName: macOS ProductVersion: 15.3.2 BuildVersion: 24D81 lldb --version: lldb-1600.0.39.109 Apple Swift version 6.0.3 (swiftlang-6.0.3.1.10 clang-1600.0.30.1)
What did you do?
Consider this play: https://play.golang.com/p/wqZSGx6tIXi
What did you expect to see?
A logger created with custom handler like
l1 := slog.New(handler)
should maintain this handler when creating a derived logger with
l2 := l1.With(attr...)
What did you see instead?
Deriving an slog.Logger
using logger.With(...)
loses the loggers handler. Instead, a default slog.TextHandler
is assigned.
This is surprising and not documented: https://pkg.go.dev/log/slog#Logger.With.