Skip to content

Commit 4ecca2b

Browse files
committed
[log] implement NewErrorLogger
New function allows simpler creation of logging function with arbitrary loglevel. Change-Id: Ic47f50f87daa4001112f7883ee7d672048311097
1 parent a052e73 commit 4ecca2b

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

logger/logger.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package logger
33
import (
44
"math"
55

6+
"dev.gaijin.team/go/golib/e"
67
"dev.gaijin.team/go/golib/fields"
78
)
89

@@ -171,3 +172,14 @@ func (l Logger) Flush() error {
171172
func (l Logger) IsZero() bool {
172173
return l.adapter == nil && l.maxLevel == 0
173174
}
175+
176+
// NewErrorLogger creates new [e.ErrorLogger] that allows to log errors with
177+
// given log-level.
178+
//
179+
// The function is most usesful for scenarios where loglevel is configured after
180+
// logger creation, such as in a middlewares.
181+
func NewErrorLogger(log Logger, level int) e.ErrorLogger {
182+
return func(msg string, err error, fs ...fields.Field) {
183+
log.Log(level, msg, err, fs...)
184+
}
185+
}

logger/zapadapter/adapter_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,20 @@ func TestAdapter(t *testing.T) {
122122

123123
assert.Equal(t, "test-logger", logs.All()[0].LoggerName)
124124
})
125+
126+
t.Run("NewErrorLogger()", func(t *testing.T) {
127+
t.Parallel()
128+
129+
adapter, logs := newAdapter()
130+
lgr := logger.New(adapter, logger.LevelError)
131+
errorLogger := logger.NewErrorLogger(lgr, logger.LevelError)
132+
133+
errorLogger("test", errors.New("test"))
134+
135+
require.Equal(t, 1, logs.Len())
136+
137+
assert.Equal(t, zapcore.ErrorLevel, logs.All()[0].Level)
138+
assert.Equal(t, "test", logs.All()[0].Message)
139+
assert.Equal(t, "test", logs.All()[0].ContextMap()["error"])
140+
})
125141
}

0 commit comments

Comments
 (0)