return old hooks from RelplaceHooks

This commit is contained in:
betrok 2018-08-26 14:40:51 +03:00
parent 7a0120e2c6
commit 13d10d8d89
2 changed files with 12 additions and 3 deletions

View File

@ -337,8 +337,11 @@ func (logger *Logger) AddHook(hook Hook) {
logger.Hooks.Add(hook) logger.Hooks.Add(hook)
} }
func (logger *Logger) ReplaceHooks(hooks LevelHooks) { // ReplaceHooks replaces the logger hooks and returns the old ones
func (logger *Logger) ReplaceHooks(hooks LevelHooks) LevelHooks {
logger.mu.Lock() logger.mu.Lock()
oldHooks := logger.Hooks
logger.Hooks = hooks logger.Hooks = hooks
logger.mu.Unlock() logger.mu.Unlock()
return oldHooks
} }

View File

@ -3,6 +3,7 @@ package logrus
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"io/ioutil"
"strconv" "strconv"
"strings" "strings"
"sync" "sync"
@ -421,20 +422,25 @@ func TestLoggingRaceWithHooksOnEntry(t *testing.T) {
wg.Wait() wg.Wait()
} }
func TestHooksReplace(t *testing.T) { func TestReplaceHooks(t *testing.T) {
old, cur := &TestHook{}, &TestHook{} old, cur := &TestHook{}, &TestHook{}
logger := New() logger := New()
logger.SetOutput(ioutil.Discard)
logger.AddHook(old) logger.AddHook(old)
hooks := make(LevelHooks) hooks := make(LevelHooks)
hooks.Add(cur) hooks.Add(cur)
logger.ReplaceHooks(hooks) replaced := logger.ReplaceHooks(hooks)
logger.Info("test") logger.Info("test")
assert.Equal(t, old.Fired, false) assert.Equal(t, old.Fired, false)
assert.Equal(t, cur.Fired, true) assert.Equal(t, cur.Fired, true)
logger.ReplaceHooks(replaced)
logger.Info("test")
assert.Equal(t, old.Fired, true)
} }
// Compile test // Compile test