...
1
16
17 package textlogger_test
18
19 import (
20 "errors"
21 "os"
22 "time"
23
24 "github.com/go-logr/logr"
25 "k8s.io/klog/v2"
26 internal "k8s.io/klog/v2/internal/buffer"
27 "k8s.io/klog/v2/textlogger"
28 )
29
30 var _ logr.Marshaler = coordinatesMarshaler{}
31
32 type coordinatesMarshaler struct {
33 x, y int
34 }
35
36 func (c coordinatesMarshaler) MarshalLog() interface{} {
37 return map[string]int{"X": c.x, "Y": c.y}
38 }
39
40 type variables struct {
41 A, B int
42 }
43
44 func ExampleNewLogger() {
45 ts, _ := time.Parse(time.RFC3339, "2000-12-24T12:30:40Z")
46 internal.Pid = 123
47 config := textlogger.NewConfig(
48 textlogger.FixedTime(ts),
49 textlogger.Verbosity(4),
50 textlogger.Output(os.Stdout),
51 )
52 logger := textlogger.NewLogger(config)
53
54 logger.V(4).Info("A debug message")
55 logger.V(5).Info("A debug message with even lower level, not printed.")
56 logger.Info("An info message")
57 logger.Error(errors.New("fake error"), "An error")
58 logger.WithValues("int", 42).Info("With values",
59 "duration", time.Second,
60 "float", 3.12,
61 "coordinates", coordinatesMarshaler{x: 100, y: 200},
62 "variables", variables{A: 1, B: 2},
63 )
64
65 someHelper(logger, "hello world")
66
67
68
69
70
71
72
73 }
74
75 func someHelper(logger klog.Logger, msg string) {
76 logger.WithCallDepth(1).Info(msg)
77 }
78
79 func ExampleBacktrace() {
80 ts, _ := time.Parse(time.RFC3339, "2000-12-24T12:30:40Z")
81 internal.Pid = 123
82 backtraceCounter := 0
83 config := textlogger.NewConfig(
84 textlogger.FixedTime(ts),
85 textlogger.Backtrace(func(_ int) (filename string, line int) {
86 backtraceCounter++
87 if backtraceCounter == 1 {
88
89 return "", 0
90 }
91 return "fake.go", 42
92
93
94
95
96
97
98
99 }),
100 textlogger.Output(os.Stdout),
101 )
102 logger := textlogger.NewLogger(config)
103
104 logger.Info("First message")
105 logger.Info("Second message")
106
107
108
109
110 }
111
View as plain text