func main() { // load from the local JSON file into a config.Config struct cfg := config.NewConfig("./config.json") flag.Parse() // SetServerOverrides will allow us to override some of the values in // the JSON file with CLI flags. config.SetServerOverrides(cfg.Server) // initialize Gizmo’s server with given configs server.Init("nyt-saved-items", cfg.Server) // instantiate a new ‘saved items service’ with our MySQL credentials svc, err := service.NewSavedItemsService(cfg.MySQL) if err != nil { server.Log.Fatal("unable to create saved items service: ", err) } // register our saved item service with the Gizmo server err = server.Register(svc) if err != nil { server.Log.Fatal("unable to register saved items service: ", err) } // run the Gizmo server err = server.Run() if err != nil { server.Log.Fatal("unable to run saved items service: ", err) } }
// Init will set up our name, logging, healthchecks and parse flags. If DefaultServer isn't set, // this func will set it to a `SimpleServer` listening on `Config.Server.HTTPPort`. func Init(name string, scfg *config.Server) { // generate a unique ID for the server id, _ := uuid.NewV4() Name = name + "-" + Version + "-" + id.String() // if no config given, attempt to pull one from // the environment. if scfg == nil { // allow the default config to be overridden by CLI flag.Parse() cfg := config.NewConfig(*config.ConfigLocationCLI) config.SetServerOverrides(cfg.Server) scfg = cfg.Server } if scfg.GOMAXPROCS != nil { runtime.GOMAXPROCS(*scfg.GOMAXPROCS) } else { runtime.GOMAXPROCS(runtime.NumCPU()) } if scfg.JSONContentType != nil { jsonContentType = *scfg.JSONContentType } if scfg.MaxHeaderBytes != nil { maxHeaderBytes = *scfg.MaxHeaderBytes } // setup app logging if scfg.Log != "" { lf, err := logrotate.NewFile(scfg.Log) if err != nil { Log.Fatalf("unable to access log file: %s", err) } Log.Out = lf // json output when writing to file Log.Formatter = &logrus.JSONFormatter{} } else { Log.Out = os.Stderr } SetLogLevel(scfg) server = NewServer(scfg) }
func main() { cfg := config.NewConfig("./config.json") // set the pubsub's Log to be the same as server's pubsub.Log = server.Log // in case we want to override the port or log location via CLI flag.Parse() config.SetServerOverrides(cfg.Server) server.Init("gamestream-example", cfg.Server) err := server.Register(service.NewStreamService(cfg.Server.HTTPPort, cfg.Kafka)) if err != nil { server.Log.Fatal(err) } if err = server.Run(); err != nil { server.Log.Fatal(err) } }