func Warn(msg string, fields ...Field) {
	getLogger().Warn(msg, fields...)
}
Warn method output warning level log.
package log
import (
	"fmt"
	"log"
	"os"
	"strings"
	"sync"
	"time"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"gopkg.in/natefinch/lumberjack.v2"
)
var (
	logger *zap.Logger
	once   sync.Once
)
func InitLogger() {
	once.Do(func() {
		logger = newLogger()
	})
}
func FlushLogger() {
	if logger != nil {
		logger.Sync()
	}
}
func ZapLogger() *zap.Logger {
	return getLogger()
}
func Reset() {
	lock.Lock()
	defer lock.Unlock()
	logger = newLogger()
}
func Check(level int32) bool {
	var lvl zapcore.Level
	if level < 5 {
		lvl = zapcore.InfoLevel
	} else {
		lvl = zapcore.DebugLevel
	}
	checkEntry := getLogger().Check(lvl, "")
	return checkEntry != nil
}
func StdErrLogger() *log.Logger {
	if l, err := zap.NewStdLogAt(getLogger(), zapcore.ErrorLevel); err == nil {
		return l
	}
	return nil
}
func StdInfoLogger() *log.Logger {
	if l, err := zap.NewStdLogAt(getLogger(), zapcore.InfoLevel); err == nil {
		return l
	}
	return nil
}
func Debug(msg string, fields ...Field) {
	getLogger().Debug(msg, fields...)
}
func Info(msg string, fields ...Field) {
	getLogger().Info(msg, fields...)
}