Skip to content

Commit

Permalink
Merge pull request sirupsen#903 from gavincabbage/entry-logf-level
Browse files Browse the repository at this point in the history
prevent string formatting in Entry.Logf when log level is not enabled
  • Loading branch information
dgsb committed Feb 10, 2019
2 parents f5d9197 + 2eb0003 commit 85c2230
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
6 changes: 4 additions & 2 deletions entry.go
Expand Up @@ -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{}) {
Expand Down Expand Up @@ -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]
}
}
14 changes: 14 additions & 0 deletions entry_test.go
Expand Up @@ -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", )
}

0 comments on commit 85c2230

Please sign in to comment.