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> |
||
|---|---|---|
| .github | ||
| api | ||
| doc | ||
| lib/time | ||
| misc | ||
| src | ||
| test | ||
| .gitattributes | ||
| .gitignore | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| PATENTS | ||
| README.md | ||
| SECURITY.md | ||
| codereview.cfg | ||
| go.env | ||
README.md
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 4.0 Attributions license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.