package logrus import ( "context" "github.com/sirupsen/logrus" "gitoa.ru/go-4devs/log" "gitoa.ru/go-4devs/log/entry" "gitoa.ru/go-4devs/log/level" ) // Standard create new standart logrus handler. func Standard() log.Logger { return New(logrus.StandardLogger()) } // New create new logrus handler. func New(log *logrus.Logger) log.Logger { return func(ctx context.Context, data *entry.Entry) (int, error) { lrgFields := make(logrus.Fields, data.Fields().Len()) for _, field := range data.Fields() { lrgFields[string(field.Key())] = field.AsInterface() } entry := log.WithContext(ctx).WithFields(lrgFields) switch data.Level() { case level.Emergency: entry.Panic(data.Message()) case level.Alert: entry.Fatal(data.Message()) case level.Critical, level.Error: entry.Error(data.Message()) case level.Warning: entry.Warn(data.Message()) case level.Notice, level.Info: entry.Info(data.Message()) case level.Debug: entry.Debug(data.Message()) } return 0, nil } }