diff --git a/entry.go b/entry.go index 5a5cbfe7c..00e519d5b 100644 --- a/entry.go +++ b/entry.go @@ -278,6 +278,14 @@ func (entry *Entry) write() { } } +func (entry *Entry) SetLevel(level Level) { + entry.Logger.SetLevel(level) +} + +func (entry *Entry) IsLevelEnabled(level Level) bool { + return entry.Logger.IsLevelEnabled(level) +} + func (entry *Entry) Log(level Level, args ...interface{}) { if entry.Logger.IsLevelEnabled(level) { entry.log(level, fmt.Sprint(args...)) diff --git a/logrus.go b/logrus.go index 2f16224cb..8731d2b65 100644 --- a/logrus.go +++ b/logrus.go @@ -176,6 +176,12 @@ type FieldLogger interface { // IsPanicEnabled() bool } +type Ext2FieldLogger interface { + FieldLogger + SetLevel(level Level) + IsLevelEnabled(level Level) bool +} + // Ext1FieldLogger (the first extension to FieldLogger) is superfluous, it is // here for consistancy. Do not use. Use Logger or Entry instead. type Ext1FieldLogger interface { diff --git a/logrus_test.go b/logrus_test.go index 9c3c920de..46ef86736 100644 --- a/logrus_test.go +++ b/logrus_test.go @@ -631,14 +631,23 @@ func TestLogrusInterfaces(t *testing.T) { b := l.WithField("key", "value") b.Debug("Test") } + + fn2 := func(xl Ext2FieldLogger) { + var l FieldLogger = xl + b := l.WithField("key", "value") + b.Debug("Test") + } + // test logger logger := New() logger.Out = &buffer fn(logger) + fn2(logger) // test Entry e := logger.WithField("another", "value") fn(e) + fn2(e) } // Implements io.Writer using channels for synchronization, so we can wait on