Skip to content

Commit c22e87b

Browse files
authored
Add wrapper functions for log levels (#6568)
1 parent b6be74d commit c22e87b

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

internal/logger/logger.go

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ package log
22

33
import (
44
"context"
5+
"fmt"
56
"log/slog"
67
"os"
8+
"runtime"
9+
"time"
710

811
"github.com/nginxinc/kubernetes-ingress/internal/logger/glog"
12+
"github.com/nginxinc/kubernetes-ingress/internal/logger/levels"
913
)
1014

1115
type ctxLogger struct{}
@@ -22,3 +26,137 @@ func LoggerFromContext(ctx context.Context) *slog.Logger {
2226
}
2327
return slog.New(glog.New(os.Stdout, nil))
2428
}
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

Comments
 (0)