...
1
16
17 package klog
18
19 import (
20 "github.com/go-logr/logr"
21
22 "k8s.io/klog/v2/internal/serialize"
23 )
24
25 const (
26
27 nameKey = "logger"
28 )
29
30
31
32
33 func NewKlogr() Logger {
34 return New(&klogger{})
35 }
36
37
38
39 type klogger struct {
40 callDepth int
41
42
43
44
45 hasPrefix bool
46
47 values []interface{}
48 groups string
49 }
50
51 func (l *klogger) Init(info logr.RuntimeInfo) {
52 l.callDepth += info.CallDepth
53 }
54
55 func (l *klogger) Info(level int, msg string, kvList ...interface{}) {
56 merged := serialize.MergeKVs(l.values, kvList)
57
58 VDepth(l.callDepth+1, Level(level)).InfoSDepth(l.callDepth+1, msg, merged...)
59 }
60
61 func (l *klogger) Enabled(level int) bool {
62 return VDepth(l.callDepth+1, Level(level)).Enabled()
63 }
64
65 func (l *klogger) Error(err error, msg string, kvList ...interface{}) {
66 merged := serialize.MergeKVs(l.values, kvList)
67 ErrorSDepth(l.callDepth+1, err, msg, merged...)
68 }
69
70
71
72
73 func (l klogger) WithName(name string) logr.LogSink {
74 if l.hasPrefix {
75
76
77
78 v := make([]interface{}, 0, len(l.values))
79 v = append(v, l.values...)
80 prefix, _ := v[1].(string)
81 v[1] = prefix + "." + name
82 l.values = v
83 } else {
84
85 v := make([]interface{}, 0, 2+len(l.values))
86 v = append(v, nameKey, name)
87 v = append(v, l.values...)
88 l.values = v
89 l.hasPrefix = true
90 }
91 return &l
92 }
93
94 func (l klogger) WithValues(kvList ...interface{}) logr.LogSink {
95 l.values = serialize.WithValues(l.values, kvList)
96 return &l
97 }
98
99 func (l klogger) WithCallDepth(depth int) logr.LogSink {
100 l.callDepth += depth
101 return &l
102 }
103
104 var _ logr.LogSink = &klogger{}
105 var _ logr.CallDepthLogSink = &klogger{}
106
View as plain text