summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorJonathan Amsterdam <jba@google.com>2023-04-07 09:52:56 -0400
committerJonathan Amsterdam <jba@google.com>2023-04-20 17:36:42 +0000
commitbdccb85f509d24789694df198fe7bde948aa7955 (patch)
treed41796ddc08e58b5ca138f42f3d54b55b5c3ab50 /api
parentd22f287f12f4782082cd93785ad91e78dbe0d4d6 (diff)
downloadgo-git-bdccb85f509d24789694df198fe7bde948aa7955.tar.gz
log/slog: add Source type for source location
Add a struct called Source that holds the function, file and line of a location in the program's source code. When HandleOptions.AddSource is true, the ReplaceAttr function will get an Attr whose key is SourceKey and whose value is a *Source. We use *Source instead of Source to save an allocation. The pointer and the value each cause one allocation up front: the pointer when it is created, and the value when it is assigned to the `any` field of a slog.Value (handle.go:283). If a ReplaceAttr function wanted to modify a Source value, it would have to create a new slog.Value to return, causing a second allocation, but the function can modify a *Source in place. TextHandler displays a Source as "file:line". JSONHandler displays a Source as a group of its non-zero fields. This replaces the previous design, where source location was always a string with the format "file:line". The new design gives users more control over how to output and consume source locations. Fixes #59280. Change-Id: I84475abd5ed83fc354b50e34325c7b246cf327c7 Reviewed-on: https://go-review.googlesource.com/c/go/+/486376 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Jonathan Amsterdam <jba@google.com> Reviewed-by: Alan Donovan <adonovan@google.com>
Diffstat (limited to 'api')
-rw-r--r--api/next/59280.txt5
1 files changed, 5 insertions, 0 deletions
diff --git a/api/next/59280.txt b/api/next/59280.txt
new file mode 100644
index 0000000000..24ad72f59f
--- /dev/null
+++ b/api/next/59280.txt
@@ -0,0 +1,5 @@
+pkg log/slog, type Source struct #59280
+pkg log/slog, type Source struct, File string #59280
+pkg log/slog, type Source struct, Function string #59280
+pkg log/slog, type Source struct, Line int #59280
+