func WithLogger(ctx context.Context, logger Logger) context.Context {
	return context.WithValue(ctx, loggerKey{}, logger)
}
WithLogger creates a new context with provided logger.
package context
import (
	"context"
	"fmt"
	"runtime"
	"sync"
	"github.com/sirupsen/logrus"
)
var (
	defaultLogger   *logrus.Entry = logrus.StandardLogger().WithField("go.version", runtime.Version())
	defaultLoggerMu sync.RWMutex
)
type Logger interface {
	Print(args ...interface{})
	Printf(format string, args ...interface{})
	Println(args ...interface{})
	Fatal(args ...interface{})
	Fatalf(format string, args ...interface{})
	Fatalln(args ...interface{})
	Panic(args ...interface{})
	Panicf(format string, args ...interface{})
	Panicln(args ...interface{})
	Debug(args ...interface{})
	Debugf(format string, args ...interface{})
	Debugln(args ...interface{})
	Error(args ...interface{})
	Errorf(format string, args ...interface{})
	Errorln(args ...interface{})
	Info(args ...interface{})
	Infof(format string, args ...interface{})
	Infoln(args ...interface{})
	Warn(args ...interface{})
	Warnf(format string, args ...interface{})
	Warnln(args ...interface{})
	WithError(err error) *logrus.Entry
}
type loggerKey struct{}