blob: daba82c47d72df05409cfadca69bfa1e34dd335b [file] [log] [blame] [edit]
// 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}
}