Skip to content

Commit 24ebbfd

Browse files
committed
Add generic methods for logging with level as argument
1 parent 70f61bb commit 24ebbfd

File tree

2 files changed

+36
-8
lines changed

2 files changed

+36
-8
lines changed

sugar.go

+24
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,12 @@ func (s *SugaredLogger) Level() zapcore.Level {
137137
return zapcore.LevelOf(s.base.core)
138138
}
139139

140+
// Log logs the provided arguments at provided level.
141+
// Spaces are added between arguments when neither is a string.
142+
func (s *SugaredLogger) Log(lvl zapcore.Level, args ...interface{}) {
143+
s.log(lvl, "", args, nil)
144+
}
145+
140146
// Debug logs the provided arguments at [DebugLevel].
141147
// Spaces are added between arguments when neither is a string.
142148
func (s *SugaredLogger) Debug(args ...interface{}) {
@@ -180,6 +186,12 @@ func (s *SugaredLogger) Fatal(args ...interface{}) {
180186
s.log(FatalLevel, "", args, nil)
181187
}
182188

189+
// Logf formats the message according to the format specifier
190+
// and logs it at provided level.
191+
func (s *SugaredLogger) Logf(lvl zapcore.Level, template string, args ...interface{}) {
192+
s.log(lvl, template, args, nil)
193+
}
194+
183195
// Debugf formats the message according to the format specifier
184196
// and logs it at [DebugLevel].
185197
func (s *SugaredLogger) Debugf(template string, args ...interface{}) {
@@ -223,6 +235,12 @@ func (s *SugaredLogger) Fatalf(template string, args ...interface{}) {
223235
s.log(FatalLevel, template, args, nil)
224236
}
225237

238+
// Logw logs a message with some additional context. The variadic key-value
239+
// pairs are treated as they are in With.
240+
func (s *SugaredLogger) Logw(lvl zapcore.Level, msg string, keysAndValues ...interface{}) {
241+
s.log(lvl, msg, nil, keysAndValues)
242+
}
243+
226244
// Debugw logs a message with some additional context. The variadic key-value
227245
// pairs are treated as they are in With.
228246
//
@@ -270,6 +288,12 @@ func (s *SugaredLogger) Fatalw(msg string, keysAndValues ...interface{}) {
270288
s.log(FatalLevel, msg, nil, keysAndValues)
271289
}
272290

291+
// Logln logs a message at provided level.
292+
// Spaces are always added between arguments.
293+
func (s *SugaredLogger) Logln(lvl zapcore.Level, args ...interface{}) {
294+
s.logln(lvl, args, nil)
295+
}
296+
273297
// Debugln logs a message at [DebugLevel].
274298
// Spaces are always added between arguments.
275299
func (s *SugaredLogger) Debugln(args ...interface{}) {

sugar_test.go

+12-8
Original file line numberDiff line numberDiff line change
@@ -311,9 +311,10 @@ func TestSugarStructuredLogging(t *testing.T) {
311311
logger.With(context...).Warnw(tt.msg, extra...)
312312
logger.With(context...).Errorw(tt.msg, extra...)
313313
logger.With(context...).DPanicw(tt.msg, extra...)
314+
logger.With(context...).Logw(WarnLevel, tt.msg, extra...)
314315

315-
expected := make([]observer.LoggedEntry, 5)
316-
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel} {
316+
expected := make([]observer.LoggedEntry, 6)
317+
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel, WarnLevel} {
317318
expected[i] = observer.LoggedEntry{
318319
Entry: zapcore.Entry{Message: tt.expectMsg, Level: lvl},
319320
Context: expectedFields,
@@ -343,9 +344,10 @@ func TestSugarConcatenatingLogging(t *testing.T) {
343344
logger.With(context...).Warn(tt.args...)
344345
logger.With(context...).Error(tt.args...)
345346
logger.With(context...).DPanic(tt.args...)
347+
logger.With(context...).Log(InfoLevel, tt.args...)
346348

347-
expected := make([]observer.LoggedEntry, 5)
348-
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel} {
349+
expected := make([]observer.LoggedEntry, 6)
350+
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel, InfoLevel} {
349351
expected[i] = observer.LoggedEntry{
350352
Entry: zapcore.Entry{Message: tt.expect, Level: lvl},
351353
Context: expectedFields,
@@ -379,9 +381,10 @@ func TestSugarTemplatedLogging(t *testing.T) {
379381
logger.With(context...).Warnf(tt.format, tt.args...)
380382
logger.With(context...).Errorf(tt.format, tt.args...)
381383
logger.With(context...).DPanicf(tt.format, tt.args...)
384+
logger.With(context...).Logf(ErrorLevel, tt.format, tt.args...)
382385

383-
expected := make([]observer.LoggedEntry, 5)
384-
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel} {
386+
expected := make([]observer.LoggedEntry, 6)
387+
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel, ErrorLevel} {
385388
expected[i] = observer.LoggedEntry{
386389
Entry: zapcore.Entry{Message: tt.expect, Level: lvl},
387390
Context: expectedFields,
@@ -415,9 +418,10 @@ func TestSugarLnLogging(t *testing.T) {
415418
logger.With(context...).Warnln(tt.args...)
416419
logger.With(context...).Errorln(tt.args...)
417420
logger.With(context...).DPanicln(tt.args...)
421+
logger.With(context...).Logln(InfoLevel, tt.args...)
418422

419-
expected := make([]observer.LoggedEntry, 5)
420-
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel} {
423+
expected := make([]observer.LoggedEntry, 6)
424+
for i, lvl := range []zapcore.Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel, InfoLevel} {
421425
expected[i] = observer.LoggedEntry{
422426
Entry: zapcore.Entry{Message: tt.expect, Level: lvl},
423427
Context: expectedFields,

0 commit comments

Comments
 (0)