]> Cypherpunks.ru repositories - gostls13.git/blob - src/log/slog/example_logvaluer_secret_test.go
log/slog: built-in handler constructors take options as a second arg
[gostls13.git] / src / log / slog / example_logvaluer_secret_test.go
1 // Copyright 2022 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package slog_test
6
7 import (
8         "log/slog"
9         "log/slog/internal/slogtest"
10         "os"
11 )
12
13 // A token is a secret value that grants permissions.
14 type Token string
15
16 // LogValue implements slog.LogValuer.
17 // It avoids revealing the token.
18 func (Token) LogValue() slog.Value {
19         return slog.StringValue("REDACTED_TOKEN")
20 }
21
22 // This example demonstrates a Value that replaces itself
23 // with an alternative representation to avoid revealing secrets.
24 func ExampleLogValuer_secret() {
25         t := Token("shhhh!")
26         logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{ReplaceAttr: slogtest.RemoveTime}))
27         logger.Info("permission granted", "user", "Perry", "token", t)
28
29         // Output:
30         // level=INFO msg="permission granted" user=Perry token=REDACTED_TOKEN
31 }