package logger import ( "fmt" "github.com/ichunt2019/log" "go_sku_server/pkg/config" "strings" "sync" ) const ( LogLevelDebug = iota LogLevelTrace LogLevelInfo LogLevelWarn LogLevelError LogLevelFatal ) var ( logD map[string]logger.LogInterface ) var once sync.Once func LogInit() { once.Do(func() { fmt.Print("日志初始化开始") configs := config.GetSectionValues("log_config") logD = make(map[string]logger.LogInterface) for _, configOne := range configs { sliceConfig := strings.Split(configOne, ",") log := getLog(sliceConfig[0], sliceConfig[1], "0") logD[sliceConfig[0]] = log } }) } /** @param path 路径 比如sku_save 即文件夹是 sku 文件名类似 是save_2020-12-10.log @param msg 错误文本 @Level 默认是 logger.LogLevelInfo 示例 */ func SyncInsert(path string, msg string, Levels ...int) { log := getLog(path, "10", "1") level := LogLevelInfo if len(Levels) > 0 { level = Levels[0] } switch level { case LogLevelDebug: log.Debug(msg) case LogLevelTrace: log.Trace(msg) case LogLevelInfo: log.Info(msg) case LogLevelWarn: log.Warn(msg) case LogLevelFatal: log.Fatal(msg) case LogLevelError: log.Error(msg) default: log.Info(msg) } log.SyncWait() } //入口 func Select(logFiled string) logger.LogInterface { log, ok := logD[logFiled] if !ok { panic("log配置:" + logFiled + "不存在") } if log, ok := log.(logger.LogInterface); ok { return log } panic("type not logger.LogInterface") } //内部方法,获取log func getLog(path string, chan_size string, openSync string) logger.LogInterface { logConfig := make(map[string]string) logConfig["log_chan_size"] = "10" slicePath := strings.Split(path, "_") if slicePath[0] == "" || slicePath[1] == "" { panic("配置文件出错:文件/路径配置出错;提示:第一个参数格式应为A_B") } logConfig["log_path"] = "logs/" + slicePath[0] logConfig["log_name"] = slicePath[1] if openSync == "1" { logConfig["open_sync"] = "1" } if chan_size != "" { logConfig["log_chan_size"] = chan_size } log, err := logger.InitLogger("file", logConfig) if err != nil { panic("初始化log包出错:") } log.Init() return log } func SetUp() (err error) { logConfig := make(map[string]string) logConfig["log_path"] = "logs" logConfig["log_chan_size"] = "5" //err = logger.InitLogger("file", logConfig) if err != nil { return err } logger.Init() return }