func NewLog(level logrus.Level, scope string) *Log {
	logger := &logrus.Logger{
		Out:       ioutil.Discard,
		Formatter: new(logrus.TextFormatter),
		Hooks:     make(logrus.LevelHooks),
		Level:     level,
	}
	hookMemory := &HookMemory{}
	logger.Hooks.Add(hookMemory)
	return &Log{
		logger:     logger,
		hookMemory: hookMemory,
		level:      level,
		scope:      scope,
		fixedFields: map[string]string{
			"scope": scope,
		},
	}
}
NewLog creates a new instance of event log.
Initially it just buffers all entries and doesn't write them.
It needs to buffer all entries, so that the context can be later attached to them
before they get serialized and written to an external source
package event
import (
	"io/ioutil"
	"github.com/sirupsen/logrus"
)
type Fields map[string]interface{}
type Log struct {
	logger      *logrus.Logger
	hookMemory  *HookMemory
	level       logrus.Level
	scope       string
	fixedFields map[string]string
}