aboutsummaryrefslogtreecommitdiff
path: root/src/log/slog/example_multi_handler_test.go
diff options
context:
space:
mode:
authorJes Cok <xigua67damn@gmail.com>2025-08-27 14:27:31 +0000
committerGopher Robot <gobot@golang.org>2025-09-04 11:07:44 -0700
commite36c5aead681d8264f1fac725f2a15c1ca2b895a (patch)
tree9fd692337f2bcf0b6f57b33b2776d30385b8b6f8 /src/log/slog/example_multi_handler_test.go
parent150fae714eb2bcf0a5fb216ac0e5c7fd76f37e02 (diff)
downloadgo-e36c5aead681d8264f1fac725f2a15c1ca2b895a.tar.xz
log/slog: add multiple handlers support for logger
Fixes #65954 Change-Id: Ib01c6f47126ce290108b20c07479c82ef17c427c GitHub-Last-Rev: 34a36ea4bf099b2ad30f35e639155853ff73ef46 GitHub-Pull-Request: golang/go#74840 Reviewed-on: https://go-review.googlesource.com/c/go/+/692237 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Jonathan Amsterdam <jba@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> Auto-Submit: Michael Pratt <mpratt@google.com>
Diffstat (limited to 'src/log/slog/example_multi_handler_test.go')
-rw-r--r--src/log/slog/example_multi_handler_test.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/log/slog/example_multi_handler_test.go b/src/log/slog/example_multi_handler_test.go
new file mode 100644
index 0000000000..daba82c47d
--- /dev/null
+++ b/src/log/slog/example_multi_handler_test.go
@@ -0,0 +1,39 @@
+// Copyright 2025 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package slog_test
+
+import (
+ "bytes"
+ "log/slog"
+ "os"
+)
+
+func ExampleMultiHandler() {
+ removeTime := func(groups []string, a slog.Attr) slog.Attr {
+ if a.Key == slog.TimeKey && len(groups) == 0 {
+ return slog.Attr{}
+ }
+ return a
+ }
+
+ var textBuf, jsonBuf bytes.Buffer
+ textHandler := slog.NewTextHandler(&textBuf, &slog.HandlerOptions{ReplaceAttr: removeTime})
+ jsonHandler := slog.NewJSONHandler(&jsonBuf, &slog.HandlerOptions{ReplaceAttr: removeTime})
+
+ multiHandler := slog.NewMultiHandler(textHandler, jsonHandler)
+ logger := slog.New(multiHandler)
+
+ logger.Info("login",
+ slog.String("name", "whoami"),
+ slog.Int("id", 42),
+ )
+
+ os.Stdout.WriteString(textBuf.String())
+ os.Stdout.WriteString(jsonBuf.String())
+
+ // Output:
+ // level=INFO msg=login name=whoami id=42
+ // {"level":"INFO","msg":"login","name":"whoami","id":42}
+}