func LoggerToKV(logger Logger) KVLoggerFacade {
	return loggerToKV{logger: ensureLoggerFacade(logger)}
}
LoggerToKV converts a Logger to a KVLogger.
package logur
import (
	"context"
	kvs "logur.dev/logur/internal/keyvals"
)
type Logger interface {
	Trace(msg string, fields ...map[string]interface{})
	Debug(msg string, fields ...map[string]interface{})
	Info(msg string, fields ...map[string]interface{})
	Warn(msg string, fields ...map[string]interface{})
	Error(msg string, fields ...map[string]interface{})
}
type LoggerContext interface {
	TraceContext(ctx context.Context, msg string, fields ...map[string]interface{})
	DebugContext(ctx context.Context, msg string, fields ...map[string]interface{})
	InfoContext(ctx context.Context, msg string, fields ...map[string]interface{})
	WarnContext(ctx context.Context, msg string, fields ...map[string]interface{})
	ErrorContext(ctx context.Context, msg string, fields ...map[string]interface{})
}
type LoggerFacade interface {
	Logger
	LoggerContext
}
func ensureLoggerFacade(logger Logger) LoggerFacade {
	if logger, ok := logger.(LoggerFacade); ok {
		return logger
	}
	if levelEnabler, ok := logger.(LevelEnabler); ok {
		return levelEnablerLoggerFacade{
			LoggerFacade: loggerFacade{logger},
			LevelEnabler: levelEnabler,
		}
	}
	return loggerFacade{logger}
}
type loggerFacade struct {
	Logger
}
func (l loggerFacade) TraceContext(_ context.Context, msg string, fields ...map[string]interface{}) {
	l.Trace(msg, fields...)
}
func (l loggerFacade) DebugContext(_ context.Context, msg string, fields ...map[string]interface{}) {
	l.Debug(msg, fields...)
}
func (l loggerFacade) InfoContext(_ context.Context, msg string, fields ...map[string]interface{}) {
	l.Info(msg, fields...)
}
func (l loggerFacade) WarnContext(_ context.Context, msg string, fields ...map[string]interface{}) {
	l.Warn(msg, fields...)
}
func (l loggerFacade) ErrorContext(_ context.Context, msg string, fields ...map[string]interface{}) {
	l.Error(msg, fields...)
}
type levelEnablerLoggerFacade struct {
	LoggerFacade
	LevelEnabler
}
type Fields map[string]interface{}
type LogFunc func(msg string, fields ...map[string]interface{})
type LogContextFunc func(ctx context.Context, msg string, fields ...map[string]interface{})
type NoopLogger struct{}
func (NoopLogger) Trace(_ string, _ ...map[string]interface{}) {}
func (NoopLogger) Debug(_ string, _ ...map[string]interface{}) {}
func (NoopLogger) Info(_ string, _ ...map[string]interface{})  {}
func (NoopLogger) Warn(_ string, _ ...map[string]interface{})  {}
func (NoopLogger) Error(_ string, _ ...map[string]interface{}) {}
func (NoopLogger) TraceContext(_ context.Context, _ string, _ ...map[string]interface{}) {}
func (NoopLogger) DebugContext(_ context.Context, _ string, _ ...map[string]interface{}) {}
func (NoopLogger) InfoContext(_ context.Context, _ string, _ ...map[string]interface{})  {}
func (NoopLogger) WarnContext(_ context.Context, _ string, _ ...map[string]interface{})  {}
func (NoopLogger) ErrorContext(_ context.Context, _ string, _ ...map[string]interface{}) {}
func NewNoopLogger() Logger {
	return NoopLogger{}
}
type KVLogger interface {
	Trace(msg string, keyvals ...interface{})
	Debug(msg string, keyvals ...interface{})
	Info(msg string, keyvals ...interface{})
	Warn(msg string, keyvals ...interface{})
	Error(msg string, keyvals ...interface{})
}
type KVLoggerContext interface {
	TraceContext(ctx context.Context, msg string, keyvals ...interface{})
	DebugContext(ctx context.Context, msg string, keyvals ...interface{})
	InfoContext(ctx context.Context, msg string, keyvals ...interface{})
	WarnContext(ctx context.Context, msg string, keyvals ...interface{})
	ErrorContext(ctx context.Context, msg string, keyvals ...interface{})
}
type KVLoggerFacade interface {
	KVLogger
	KVLoggerContext
}