diff options
| author | Jes Cok <xigua67damn@gmail.com> | 2025-08-27 14:27:31 +0000 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-09-04 11:07:44 -0700 |
| commit | e36c5aead681d8264f1fac725f2a15c1ca2b895a (patch) | |
| tree | 9fd692337f2bcf0b6f57b33b2776d30385b8b6f8 /src/log/slog/example_multi_handler_test.go | |
| parent | 150fae714eb2bcf0a5fb216ac0e5c7fd76f37e02 (diff) | |
| download | go-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.go | 39 |
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} +} |
