func GetLogger(ctx context.Context) *logrus.Entry {
	logger := ctx.Value(loggerKey{})
	if logger == nil {
		return L
	}
	return logger.(*logrus.Entry)
}
GetLogger retrieves the current logger from the context. If no logger is
available, the default logger is returned.
package log
import (
	"context"
	"sync/atomic"
	"github.com/sirupsen/logrus"
)
var (
	G = GetLogger
	L = logrus.NewEntry(logrus.StandardLogger())
)
type (
	loggerKey struct{}
)
const TraceLevel = logrus.Level(uint32(logrus.DebugLevel + 1))
const RFC3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
func ParseLevel(lvl string) (logrus.Level, error) {
	if lvl == "trace" {
		return TraceLevel, nil
	}
	return logrus.ParseLevel(lvl)
}
func WithLogger(ctx context.Context, logger *logrus.Entry) context.Context {
	return context.WithValue(ctx, loggerKey{}, logger)
}