func (logger Logger) Panic(msg string, fields ...Field) {
	logger.Log(Panic, msg, fields...)
}
Panic is a convenience method equivalent to `Log(PanicLevel, msg, fields...)`
package logr
import "log"
type Logger struct {
	lgr    *Logr
	fields []Field
}
func (logger Logger) Logr() *Logr {
	return logger.lgr
}
func (logger Logger) With(fields ...Field) Logger {
	l := Logger{lgr: logger.lgr}
	size := len(logger.fields) + len(fields)
	if size > 0 {
		l.fields = make([]Field, 0, size)
		l.fields = append(l.fields, logger.fields...)
		l.fields = append(l.fields, fields...)
	}
	return l
}
func (logger Logger) StdLogger(level Level) *log.Logger {
	return NewStdLogger(level, logger)
}
func (logger Logger) IsLevelEnabled(level Level) bool {
	status := logger.Logr().IsLevelEnabled(level)
	return status.Enabled
}
func (logger Logger) Sugar(fields ...Field) Sugar {
	return Sugar{
		logger: logger.With(fields...),
	}
}
func (logger Logger) Log(lvl Level, msg string, fields ...Field) {
	status := logger.lgr.IsLevelEnabled(lvl)
	if status.Enabled {
		rec := NewLogRec(lvl, logger, msg, fields, status.Stacktrace)
		logger.lgr.enqueue(rec)
	}
}
func (logger Logger) LogM(levels []Level, msg string, fields ...Field) {
	for _, lvl := range levels {
		logger.Log(lvl, msg, fields...)
	}
}
func (logger Logger) Trace(msg string, fields ...Field) {
	logger.Log(Trace, msg, fields...)
}
func (logger Logger) Debug(msg string, fields ...Field) {
	logger.Log(Debug, msg, fields...)
}
func (logger Logger) Info(msg string, fields ...Field) {
	logger.Log(Info, msg, fields...)
}
func (logger Logger) Warn(msg string, fields ...Field) {
	logger.Log(Warn, msg, fields...)
}
func (logger Logger) Error(msg string, fields ...Field) {
	logger.Log(Error, msg, fields...)
}
func (logger Logger) Fatal(msg string, fields ...Field) {
	logger.Log(Fatal, msg, fields...)
}