forked from mirror/logrus
prevent string formatting in Entry.Logf when log level is not enabled
This commit is contained in:
parent
4ea4861398
commit
c4e4882020
6
entry.go
6
entry.go
|
@ -298,7 +298,9 @@ func (entry *Entry) Panic(args ...interface{}) {
|
|||
// Entry Printf family functions
|
||||
|
||||
func (entry *Entry) Logf(level Level, format string, args ...interface{}) {
|
||||
entry.Log(level, fmt.Sprintf(format, args...))
|
||||
if entry.Logger.IsLevelEnabled(level) {
|
||||
entry.Log(level, fmt.Sprintf(format, args...))
|
||||
}
|
||||
}
|
||||
|
||||
func (entry *Entry) Tracef(format string, args ...interface{}) {
|
||||
|
@ -390,4 +392,4 @@ func (entry *Entry) Panicln(args ...interface{}) {
|
|||
func (entry *Entry) sprintlnn(args ...interface{}) string {
|
||||
msg := fmt.Sprintln(args...)
|
||||
return msg[:len(msg)-1]
|
||||
}
|
||||
}
|
|
@ -139,3 +139,17 @@ func TestEntryWithIncorrectField(t *testing.T) {
|
|||
assert.Equal(eWithFunc.err, `can not add field "func"`)
|
||||
assert.Equal(eWithFuncPtr.err, `can not add field "funcPtr"`)
|
||||
}
|
||||
|
||||
func TestEntryLogfLevel(t *testing.T) {
|
||||
logger := New()
|
||||
buffer := &bytes.Buffer{}
|
||||
logger.Out = buffer
|
||||
logger.SetLevel(InfoLevel)
|
||||
entry := NewEntry(logger)
|
||||
|
||||
entry.Logf(DebugLevel, "%s", "debug")
|
||||
assert.NotContains(t, buffer.String(), "debug", )
|
||||
|
||||
entry.Logf(WarnLevel, "%s", "warn")
|
||||
assert.Contains(t, buffer.String(), "warn", )
|
||||
}
|
Loading…
Reference in New Issue