package main import ( "basic.com/valib/logger.git" "context" "flag" "os" "os/signal" "sync" "syscall" "vamicro/config" "vamicro/update-service/models" "vamicro/update-service/routers" "vamicro/update-service/upgrade" "vamicro/update-service/utils" _ "basic.com/valib/version.git" ) var ( env = flag.String("e", "pro", "") ) func init() { flag.Parse() config.Init(*env) var logFile = utils.GetLogFilePath() logger.InitLogger(logFile, config.LogConf.Level, config.LogConf.MaxSize, config.LogConf.MaxBackups, config.LogConf.MaxAge) logger.Info("log init success !") } func main() { models.Init() defer models.CloseDB() wg := &sync.WaitGroup{} q := make(chan os.Signal, 1) signal.Notify(q, os.Interrupt, os.Kill, syscall.SIGTERM) ctx, cancel := context.WithCancel(context.Background()) upgrade.Initialize(ctx, wg) server := routers.InitRouter(wg) <-q logger.Info("user signalled...") // shutdown http service gracefully if err := server.Shutdown(ctx); nil != err { logger.Fatal("server shutdown failed, err:", err) } cancel() wg.Wait() logger.Info("all sub threads exited...") }