package main import ( "fmt" "go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/cmd/v2/ui" "io" "os" "fyne.io/fyne/v2/app" "github.com/sirupsen/logrus" ) var ( connService service.ConnService pttService service.PttService configService service.ConfigService obs = observer.NewObserver() logger *logrus.Logger ) // func init() { var err error if err = setupConfig(); err != nil { fmt.Println(err) os.Exit(1) } // initialize logger if err = setupLogger(); err != nil { fmt.Println(err) os.Exit(1) } if err = setupWsConn(); err != nil { fmt.Println(err) os.Exit(1) } if err = setupPtt(); err != nil { fmt.Println(err) os.Exit(1) } } func main() { logrus.Info("Starting...") // create a new ui appUI := ui.NewUI(app.NewWithID("protocol-test-tool"), configService, connService, pttService, obs) mainWindow := ui.NewMainWindow(appUI) mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true) appUI.Run() } func setupPtt() (err error) { pttService = service.NewPttService(connService) return } func setupWsConn() (err error) { connService = service.NewConnService(obs) return } func setupConfig() (err error) { configService, err = service.NewConfigService() if err != nil { return } if err = configService.ApplyConfig(); err != nil { return } return } func setupLogger() (err error) { logrus.SetFormatter(&logrus.TextFormatter{ DisableColors: true, FullTimestamp: true, }) logrus.SetLevel(logrus.DebugLevel) logrus.SetOutput(os.Stdout) //设置output,默认为stderr,可以为任何io.Writer,比如文件*os.File file, err := os.OpenFile("robot_v2.log", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666) writers := []io.Writer{ file, os.Stdout} //同时写文件和屏幕 fileAndStdoutWriter := io.MultiWriter(writers...) if err == nil { logrus.SetOutput(fileAndStdoutWriter) } else { logrus.Fatal("failed to log to file.") } return nil }