mirror of https://go.googlesource.com/go
134af2e3db
Before slog.SetDefault is called the first time, calls to slog's default Logger invoke log's default Logger. Originally, this was done by calling log.Output. This caused source line information to be wrong sometimes, because log.Output requires a call depth and the code invoking it could not know how many calls were between it and the original logging call (slog.Info, etc.). The line information would be right if the default handler was called directly, but wrong if it was wrapped by another handler. The handler has the pc of the logging call, but it couldn't give that pc to the log package. This CL fixes the problem by adding a function in the log package that uses the pc instead of a call depth, and making that function available to slog. The simplest way to add pc functionality to the log package is to add a pc argument to Logger.output, which uses it only if it's not zero. To make that function visible to slog without exporting it, we store the function in a variable that lives in the new log/internal package. Change-Id: I0bb6daebb4abc518a7ccc4e6d2f3c1093b1d0fe4 Reviewed-on: https://go-review.googlesource.com/c/go/+/482239 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com> Reviewed-by: Joseph Tsai <joetsai@digital-static.net> Run-TryBot: Jonathan Amsterdam <jba@google.com> |
||
---|---|---|
.. | ||
internal.go |