func (l *fieldLogger) Trace(msg string, fields ...map[string]interface{}) {
	l.log(Trace, l.logger.Trace, msg, fields)
}
Trace implements the logur.Logger interface.
package logur
import (
	"context"
)
func WithFields(logger Logger, fields map[string]interface{}) LoggerFacade {
	loggerFacade := ensureLoggerFacade(logger)
	if len(fields) == 0 {
		return loggerFacade
	}
	if l, ok := loggerFacade.(*fieldLogger); ok && len(l.fields) > 0 {
		_fields := make(map[string]interface{}, len(l.fields)+len(fields))
		for key, value := range l.fields {
			_fields[key] = value
		}
		for key, value := range fields {
			_fields[key] = value
		}
		fields = _fields
		logger = l.logger
	}
	l := &fieldLogger{logger: loggerFacade, fields: fields}
	if levelEnabler, ok := logger.(LevelEnabler); ok {
		l.levelEnabler = levelEnabler
	}
	return l
}
func WithField(logger Logger, key string, value interface{}) LoggerFacade {
	return WithFields(logger, map[string]interface{}{key: value})
}
type fieldLogger struct {
	logger       LoggerFacade
	fields       map[string]interface{}
	levelEnabler LevelEnabler
}