...
1
16
17 package ktesting_test
18
19 import (
20 "errors"
21 "fmt"
22 "time"
23
24 "k8s.io/klog/v2/ktesting"
25 )
26
27 func ExampleUnderlier() {
28 logger := ktesting.NewLogger(ktesting.NopTL{},
29 ktesting.NewConfig(
30 ktesting.Verbosity(4),
31 ktesting.BufferLogs(true),
32 ktesting.AnyToString(func(value interface{}) string {
33 return fmt.Sprintf("### %+v ###", value)
34 }),
35 ),
36 )
37
38 logger.Error(errors.New("failure"), "I failed", "what", "something", "data", struct{ Field int }{Field: 1})
39 logger.WithValues("request", 42).WithValues("anotherValue", "fish").Info("hello world")
40 logger.WithValues("request", 42, "anotherValue", "fish").Info("hello world 2", "yetAnotherValue", "thanks")
41 logger.WithName("example").Info("with name")
42 logger.V(4).Info("higher verbosity")
43 logger.V(5).Info("Not captured because of ktesting.Verbosity(4) above. Normally it would be captured because default verbosity is 5.")
44
45 testingLogger, ok := logger.GetSink().(ktesting.Underlier)
46 if !ok {
47 panic("Should have had a ktesting LogSink!?")
48 }
49
50 t := testingLogger.GetUnderlying()
51 t.Log("This goes to /dev/null...")
52
53 buffer := testingLogger.GetBuffer()
54 fmt.Printf("%s\n", buffer.String())
55
56 log := buffer.Data()
57 for i, entry := range log {
58 if i > 0 &&
59 entry.Timestamp.Sub(log[i-1].Timestamp).Nanoseconds() < 0 {
60 fmt.Printf("Unexpected timestamp order: #%d %s > #%d %s", i-1, log[i-1].Timestamp, i, entry.Timestamp)
61 }
62
63 entry.Timestamp = time.Time{}
64 fmt.Printf("log entry #%d: %+v\n", i, entry)
65 }
66
67
68
69
70
71
72
73
74
75
76
77
78
79 }
80
81 func ExampleNewLogger() {
82 var buffer ktesting.BufferTL
83 logger := ktesting.NewLogger(&buffer, ktesting.NewConfig())
84
85 logger.Error(errors.New("failure"), "I failed", "what", "something", "data", struct{ Field int }{Field: 1})
86 logger.V(5).Info("Logged at level 5.")
87 logger.V(6).Info("Not logged at level 6.")
88
89 testingLogger, ok := logger.GetSink().(ktesting.Underlier)
90 if !ok {
91 panic("Should have had a ktesting LogSink!?")
92 }
93 fmt.Printf(">> %s <<\n", testingLogger.GetBuffer().String())
94 fmt.Print(headerRe.ReplaceAllString(buffer.String(), "${1}...] "))
95
96
97
98
99
100 }
101
102 func ExampleConfig_Verbosity() {
103 var buffer ktesting.BufferTL
104 config := ktesting.NewConfig(ktesting.Verbosity(1))
105 logger := ktesting.NewLogger(&buffer, config)
106
107 logger.Info("initial verbosity", "v", config.Verbosity().String())
108 logger.V(2).Info("now you don't see me")
109 if err := config.Verbosity().Set("2"); err != nil {
110 logger.Error(err, "setting verbosity to 2")
111 }
112 logger.V(2).Info("now you see me")
113 if err := config.Verbosity().Set("1"); err != nil {
114 logger.Error(err, "setting verbosity to 1")
115 }
116 logger.V(2).Info("now I'm gone again")
117
118 fmt.Print(headerRe.ReplaceAllString(buffer.String(), "${1}...] "))
119
120
121
122
123 }
124
View as plain text