From 81ba5668f28ce325cf01b4a925c246281082fd26 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 22 Aug 2022 18:51:44 +0800 Subject: [PATCH] [change] print message when loading error --- api/api.go | 9 +++++++++ engine/load.go | 48 ++++++++++++++++++++++++++++++------------------ table/table.go | 6 ++++++ 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/api/api.go b/api/api.go index 91e7e3c3..fb76b859 100644 --- a/api/api.go +++ b/api/api.go @@ -3,6 +3,7 @@ package api import ( "fmt" "path/filepath" + "strings" "github.com/yaoapp/gou" "github.com/yaoapp/kun/log" @@ -23,12 +24,15 @@ func LoadFrom(dir string, prefix string) error { if share.DirNotExists(dir) { return fmt.Errorf("%s does not exists", dir) } + + messages := []string{} err := share.Walk(dir, ".http.json", func(root, filename string) { name := prefix + share.SpecName(root, filename) content := share.ReadFile(filename) _, err := gou.LoadAPIReturn(string(content), name, "bearer-jwt") if err != nil { log.With(log.F{"root": root, "file": filename}).Error(err.Error()) + messages = append(messages, fmt.Sprintf("%s %s", name, err.Error())) } }) @@ -39,9 +43,14 @@ func LoadFrom(dir string, prefix string) error { _, err := gou.LoadWebSocketServer(string(content), name) if err != nil { log.With(log.F{"root": root, "file": filename}).Error(err.Error()) + messages = append(messages, fmt.Sprintf("%s %s", name, err.Error())) } }) + if len(messages) > 0 { + return fmt.Errorf("%s", strings.Join(messages, ";")) + } + return err } diff --git a/engine/load.go b/engine/load.go index c35bae19..87c5aa29 100644 --- a/engine/load.go +++ b/engine/load.go @@ -4,10 +4,11 @@ import ( "fmt" "os" "path/filepath" + "strings" + "github.com/fatih/color" "github.com/yaoapp/gou" "github.com/yaoapp/kun/exception" - "github.com/yaoapp/kun/log" "github.com/yaoapp/yao/api" "github.com/yaoapp/yao/app" "github.com/yaoapp/yao/cert" @@ -45,7 +46,7 @@ func Load(cfg config.Config) (err error) { // Load Certs err = cert.Load(cfg) if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Cert", err) } // 第二步: 建立数据库 & 会话连接 @@ -65,83 +66,94 @@ func Load(cfg config.Config) (err error) { // 第四步: 加载共享库 & JS 处理器 err = share.Load(cfg) // 加载共享库 lib if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Lib", err) } err = script.Load(cfg) // 加载JS处理器 script if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Script", err) } // 第五步: 加载数据模型等 err = model.Load(cfg) // 加载数据模型 model if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Model", err) } err = flow.Load(cfg) // 加载业务逻辑 Flow if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Flow", err) } err = store.Load(cfg) // Load stores if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Store", err) } err = plugin.Load(cfg) // 加载业务插件 plugin if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Plugin", err) } err = table.Load(cfg) // 加载数据表格 table if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Table", err) } err = chart.Load(cfg) // 加载分析图表 chart if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Chart", err) + } + + err = page.Load(cfg) // 加载页面 page 忽略错误 + if err != nil { + printErr(cfg.Mode, "Page", err) } - page.Load(cfg) // 加载页面 page 忽略错误 importer.Load(cfg) // 加载数据导入 imports // workflow.Load(cfg) // 加载工作流 workflow err = api.Load(cfg) // 加载业务接口 API if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "API", err) } err = socket.Load(cfg) // Load sockets if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Socket", err) } err = websocket.Load(cfg) // Load websockets (client) if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "WebSocket", err) } err = task.Load(cfg) // Load tasks if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Task", err) } err = schedule.Load(cfg) // Load schedules if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Schedule", err) } - err = widget.Load(cfg) // Load schedules + err = widget.Load(cfg) // Load widgets if err != nil { - log.Debug(err.Error()) + printErr(cfg.Mode, "Widget", err) } return nil } +func printErr(mode, widget string, err error) { + message := fmt.Sprintf("[%s] %s", widget, err.Error()) + if !strings.Contains(message, "does not exists") && mode == "development" { + color.Red(message) + } +} + // Reload 根据配置重新加载 API, FLow, Model, Plugin func Reload(cfg config.Config) { gou.APIs = map[string]*gou.API{} diff --git a/table/table.go b/table/table.go index 765bbdd7..39b24125 100644 --- a/table/table.go +++ b/table/table.go @@ -127,15 +127,21 @@ func LoadFrom(dir string, prefix string) error { return fmt.Errorf("%s does not exists", dir) } + messages := []string{} err := share.Walk(dir, ".json", func(root, filename string) { name := share.SpecName(root, filename) content := share.ReadFile(filename) _, err := LoadTable(string(content), name) if err != nil { log.With(log.F{"root": root, "file": filename}).Error(err.Error()) + messages = append(messages, fmt.Sprintf("%s %s", name, err.Error())) } }) + if len(messages) > 0 { + return fmt.Errorf("%s", strings.Join(messages, ";")) + } + return err }