| // 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} | |
| } | |