@@ -2,10 +2,14 @@ package log
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
5
6
"log/slog"
6
7
"os"
8
+ "runtime"
9
+ "time"
7
10
8
11
"github.com/nginxinc/kubernetes-ingress/internal/logger/glog"
12
+ "github.com/nginxinc/kubernetes-ingress/internal/logger/levels"
9
13
)
10
14
11
15
type ctxLogger struct {}
@@ -22,3 +26,137 @@ func LoggerFromContext(ctx context.Context) *slog.Logger {
22
26
}
23
27
return slog .New (glog .New (os .Stdout , nil ))
24
28
}
29
+
30
+ // Tracef returns formatted trace log
31
+ func Tracef (logger * slog.Logger , format string , args ... any ) {
32
+ if ! logger .Enabled (context .Background (), levels .LevelTrace ) {
33
+ return
34
+ }
35
+ var pcs [1 ]uintptr
36
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Tracef]
37
+ r := slog .NewRecord (time .Now (), levels .LevelTrace , fmt .Sprintf (format , args ... ), pcs [0 ])
38
+ _ = logger .Handler ().Handle (context .Background (), r )
39
+ }
40
+
41
+ // Trace returns raw trace log
42
+ func Trace (logger * slog.Logger , args ... any ) {
43
+ if ! logger .Enabled (context .Background (), levels .LevelTrace ) {
44
+ return
45
+ }
46
+ var pcs [1 ]uintptr
47
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Trace]
48
+ r := slog .NewRecord (time .Now (), levels .LevelTrace , fmt .Sprint (args ... ), pcs [0 ])
49
+ _ = logger .Handler ().Handle (context .Background (), r )
50
+ }
51
+
52
+ // Debugf returns formatted trace log
53
+ func Debugf (logger * slog.Logger , format string , args ... any ) {
54
+ if ! logger .Enabled (context .Background (), levels .LevelDebug ) {
55
+ return
56
+ }
57
+ var pcs [1 ]uintptr
58
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Debugf]
59
+ r := slog .NewRecord (time .Now (), levels .LevelDebug , fmt .Sprintf (format , args ... ), pcs [0 ])
60
+ _ = logger .Handler ().Handle (context .Background (), r )
61
+ }
62
+
63
+ // Debug returns raw trace log
64
+ func Debug (logger * slog.Logger , args ... any ) {
65
+ if ! logger .Enabled (context .Background (), levels .LevelDebug ) {
66
+ return
67
+ }
68
+ var pcs [1 ]uintptr
69
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Debug]
70
+ r := slog .NewRecord (time .Now (), levels .LevelDebug , fmt .Sprint (args ... ), pcs [0 ])
71
+ _ = logger .Handler ().Handle (context .Background (), r )
72
+ }
73
+
74
+ // Infof returns formatted trace log
75
+ func Infof (logger * slog.Logger , format string , args ... any ) {
76
+ if ! logger .Enabled (context .Background (), levels .LevelInfo ) {
77
+ return
78
+ }
79
+ var pcs [1 ]uintptr
80
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Infof]
81
+ r := slog .NewRecord (time .Now (), levels .LevelInfo , fmt .Sprintf (format , args ... ), pcs [0 ])
82
+ _ = logger .Handler ().Handle (context .Background (), r )
83
+ }
84
+
85
+ // Info returns raw trace log
86
+ func Info (logger * slog.Logger , args ... any ) {
87
+ if ! logger .Enabled (context .Background (), levels .LevelInfo ) {
88
+ return
89
+ }
90
+ var pcs [1 ]uintptr
91
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Info]
92
+ r := slog .NewRecord (time .Now (), levels .LevelInfo , fmt .Sprint (args ... ), pcs [0 ])
93
+ _ = logger .Handler ().Handle (context .Background (), r )
94
+ }
95
+
96
+ // Warnf returns formatted trace log
97
+ func Warnf (logger * slog.Logger , format string , args ... any ) {
98
+ if ! logger .Enabled (context .Background (), levels .LevelWarning ) {
99
+ return
100
+ }
101
+ var pcs [1 ]uintptr
102
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Warn]
103
+ r := slog .NewRecord (time .Now (), levels .LevelWarning , fmt .Sprintf (format , args ... ), pcs [0 ])
104
+ _ = logger .Handler ().Handle (context .Background (), r )
105
+ }
106
+
107
+ // Warn returns raw trace log
108
+ func Warn (logger * slog.Logger , args ... any ) {
109
+ if ! logger .Enabled (context .Background (), levels .LevelWarning ) {
110
+ return
111
+ }
112
+ var pcs [1 ]uintptr
113
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Warn]
114
+ r := slog .NewRecord (time .Now (), levels .LevelWarning , fmt .Sprint (args ... ), pcs [0 ])
115
+ _ = logger .Handler ().Handle (context .Background (), r )
116
+ }
117
+
118
+ // Errorf returns formatted trace log
119
+ func Errorf (logger * slog.Logger , format string , args ... any ) {
120
+ if ! logger .Enabled (context .Background (), levels .LevelError ) {
121
+ return
122
+ }
123
+ var pcs [1 ]uintptr
124
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Errorf]
125
+ r := slog .NewRecord (time .Now (), levels .LevelError , fmt .Sprintf (format , args ... ), pcs [0 ])
126
+ _ = logger .Handler ().Handle (context .Background (), r )
127
+ }
128
+
129
+ // Error returns raw trace log
130
+ func Error (logger * slog.Logger , args ... any ) {
131
+ if ! logger .Enabled (context .Background (), levels .LevelError ) {
132
+ return
133
+ }
134
+ var pcs [1 ]uintptr
135
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Error]
136
+ r := slog .NewRecord (time .Now (), levels .LevelError , fmt .Sprint (args ... ), pcs [0 ])
137
+ _ = logger .Handler ().Handle (context .Background (), r )
138
+ }
139
+
140
+ // Fatalf returns formatted trace log
141
+ func Fatalf (logger * slog.Logger , format string , args ... any ) {
142
+ if ! logger .Enabled (context .Background (), levels .LevelFatal ) {
143
+ return
144
+ }
145
+ var pcs [1 ]uintptr
146
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Errorf]
147
+ r := slog .NewRecord (time .Now (), levels .LevelFatal , fmt .Sprintf (format , args ... ), pcs [0 ])
148
+ _ = logger .Handler ().Handle (context .Background (), r )
149
+ os .Exit (1 )
150
+ }
151
+
152
+ // Fatal returns raw trace log
153
+ func Fatal (logger * slog.Logger , args ... any ) {
154
+ if ! logger .Enabled (context .Background (), levels .LevelFatal ) {
155
+ return
156
+ }
157
+ var pcs [1 ]uintptr
158
+ runtime .Callers (2 , pcs [:]) // skip [Callers, Error]
159
+ r := slog .NewRecord (time .Now (), levels .LevelFatal , fmt .Sprint (args ... ), pcs [0 ])
160
+ _ = logger .Handler ().Handle (context .Background (), r )
161
+ os .Exit (1 )
162
+ }
0 commit comments