github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/log/slog/example_logvaluer_secret_test.go (about) 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 }