package app_ser import ( "fmt" "github.com/urfave/cli/v2" "gopkg.in/yaml.v3" "io/ioutil" "os" "project/config/logger" ) type BasicService struct { RunBefore, InitBefore func() error } func (c *BasicService) ParserFile(cfg interface{}) error { // 解析文件 execDir, err := os.Getwd() if nil != err { return fmt.Errorf("load config (err: %s)\n", err.Error()) } fPath := fmt.Sprintf("%s%c%s", execDir, os.PathSeparator, "config.yaml") fmt.Printf("load config (path: %s)\n", fPath) fp, err := os.Open(fPath) if nil != err { return fmt.Errorf("load config (err: %s)\n", err.Error()) } defer fp.Close() d, err := ioutil.ReadAll(fp) if nil != err { return fmt.Errorf("load config (err: %s)\n", err.Error()) } // 解析配置 if err = yaml.Unmarshal(d, cfg); err != nil { return fmt.Errorf("parser config failed! %s", err.Error()) } return nil } func (c *BasicService) Init(runMode string, cfg *AppConfig, ctx *cli.Context) (logger.Interface, error) { // 设置环境 if !ctx.IsSet(CliAppEnv) { for k := range _EnvMap { if _EnvMap[k][0] == runMode { cfg.SetEnv(k) break } } } // 初始化日志 v := &logger.Console{} switch cfg.Env() { case EnvLocal: v.Init(logger.Info, true, os.Stdout, os.Stderr) case EnvDebug, EnvProd: v.Init(logger.Warn, false, os.Stdout, os.Stderr) } if c.InitBefore != nil { if err := c.InitBefore(); err != nil { return nil, err } } return v, nil }