42 lines
894 B
Go
42 lines
894 B
Go
package dilog
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type logrusTestingHook struct {
|
|
t *testing.T
|
|
formatter logrus.Formatter
|
|
}
|
|
|
|
// NewTestLogger returns a new logrusTestingHook which logs everything to `t.Log()`
|
|
func NewTestLogger(t *testing.T) Logger {
|
|
logger := logrus.New()
|
|
logger.Out = ioutil.Discard
|
|
logger.SetLevel(logrus.DebugLevel)
|
|
logger.AddHook(logrusTestingHook{
|
|
t: t,
|
|
formatter: logger.Formatter,
|
|
})
|
|
return &Logrus{logrus.NewEntry(logger)}
|
|
}
|
|
|
|
// Fire takes, formats and sends the entry to `t.Log()`
|
|
func (h logrusTestingHook) Fire(e *logrus.Entry) error {
|
|
dataBytes, err := h.formatter.Format(e)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
h.t.Log(strings.TrimRight(string(dataBytes), "\n"))
|
|
return nil
|
|
}
|
|
|
|
// Levels returns all logrus levels
|
|
func (h logrusTestingHook) Levels() []logrus.Level {
|
|
return logrus.AllLevels
|
|
}
|