Skip to content

Commit bef535c

Browse files
authored
fix error handler on WrapNew/NopLogger cause nil pointer exception (#81)
1 parent 1fd9085 commit bef535c

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

logger.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,12 @@ func (l *Logger) WrapNew(middlewares ...MiddlewareInterface) LoggerInterface {
115115
for _, middleware := range middlewares {
116116
handler = middleware(handler)
117117
}
118-
return &Logger{handler: handler}
118+
return &Logger{handler: handler, ErrorHandler: l.ErrorHandler}
119119
}
120120

121121
// NewNopLogger will create a new no operating logger that log nowhere
122122
func NewNopLogger() *Logger {
123-
return &Logger{handler: NopHandler}
123+
return NewLogger(NopHandler)
124124
}
125125

126126
// NewLogger will return a new logger

logger_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"log"
88
"log/syslog"
99
"os"
10+
"reflect"
1011
"strings"
1112
"testing"
1213
"time"
@@ -251,6 +252,41 @@ func TestNewLogger_WrapNew(t *testing.T) {
251252
assert.Equal(t, 4, i)
252253
}
253254

255+
func TestNewLogger_WrapNewErrorHandler(t *testing.T) {
256+
mockHandlerCalled := false
257+
mockHandler := func(entry logger.Entry) error {
258+
mockHandlerCalled = true
259+
assert.Equal(t, "l message", entry.Message)
260+
assert.Equal(t, logger.DebugLevel, entry.Level)
261+
assert.Equal(t, logger.Context{}, *entry.Context)
262+
263+
return errors.New("my handler error")
264+
}
265+
errorHandlerCalled := false
266+
l := logger.NewLogger(mockHandler)
267+
l.ErrorHandler = func(err error, entry logger.Entry) {
268+
errorHandlerCalled = true
269+
assert.EqualError(t, err, "my handler error")
270+
}
271+
272+
l2 := l.WrapNew()
273+
274+
ptr1 := reflect.ValueOf(l.ErrorHandler).Pointer()
275+
ptr2 := reflect.ValueOf(l2.(*logger.Logger).ErrorHandler).Pointer()
276+
assert.Equal(t, ptr1, ptr2)
277+
278+
l.Debug("l message")
279+
assert.True(t, mockHandlerCalled)
280+
assert.True(t, errorHandlerCalled)
281+
282+
mockHandlerCalled = false
283+
errorHandlerCalled = false
284+
285+
l2.Debug("l message")
286+
assert.True(t, mockHandlerCalled)
287+
assert.True(t, errorHandlerCalled)
288+
}
289+
254290
// =====================================================================================================================
255291
// ================================================= EXAMPLES ==========================================================
256292
// =====================================================================================================================

0 commit comments

Comments
 (0)