aboutsummaryrefslogtreecommitdiff
path: root/src/log/slog/example_multi_handler_test.go
diff options
context:
space:
mode:
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}
+}