func loadLoggerAndConfig(c *cli.Context, component string) (logger.Logger, *gosteno.Logger, *config.Config) { configPath := c.String("config") if configPath == "" { fmt.Printf("Config path required") os.Exit(1) } conf, err := config.FromFile(configPath) if err != nil { fmt.Printf("Failed to load config: %s", err.Error()) os.Exit(1) } stenoConf := &gosteno.Config{ Sinks: []gosteno.Sink{ gosteno.NewIOSink(os.Stdout), gosteno.NewSyslogSink("vcap.hm9000." + component), }, Level: conf.LogLevel(), Codec: gosteno.NewJsonCodec(), } gosteno.Init(stenoConf) steno := gosteno.NewLogger("vcap.hm9000." + component) hmLogger := logger.NewRealLogger(steno) return hmLogger, steno, conf }
func loadLoggerAndConfig(c *cli.Context, component string) (logger.Logger, *gosteno.Logger, *config.Config) { configPath := c.String("config") if configPath == "" { fmt.Printf("Config path required") os.Exit(1) } conf, err := config.FromFile(configPath) if err != nil { fmt.Printf("Failed to load config: %s", err.Error()) os.Exit(1) } sinks := make([]gosteno.Sink, 0, 3) if conf.LogDirectory != "" { logName := fmt.Sprintf("hm9000_%s.log", component) logFile := path.Join(conf.LogDirectory, logName) sinks = append(sinks, gosteno.NewFileSink(logFile)) } else { sinks = append(sinks, gosteno.NewIOSink(os.Stdout)) } sinks = append(sinks, gosteno.NewSyslogSink("vcap.hm9000."+component)) stenoConf := &gosteno.Config{ Sinks: sinks, Level: conf.LogLevel(), Codec: gosteno.NewJsonCodec(), } gosteno.Init(stenoConf) steno := gosteno.NewLogger("vcap.hm9000." + component) hmLogger := logger.NewRealLogger(steno) debugAddr := c.String("debugAddr") if debugAddr != "" { _, err = cf_debug_server.Run(debugAddr, nil) if err != nil { hmLogger.Error("Failed to start debug server", err) os.Exit(1) } } return hmLogger, steno, conf }
func main() { cmdsToStop = []*exec.Cmd{} registerSignalHandler() nats = natsrunner.NewNATSRunner(4222) nats.Start() fakeCC := desiredstateserver.NewDesiredStateServer() go fakeCC.SpinUp(6001) // etcd = storerunner.NewETCDClusterRunner(4001, 1) // etcd.Start() conf, _ := config.FromFile("./config.json") adapter := storeadapter.NewETCDStoreAdapter(conf.StoreURLs, workerpool.NewWorkerPool(30)) adapter.Connect() store = storepackage.NewStore(conf, adapter, fakelogger.NewFakeLogger()) r := rand.New(rand.NewSource(time.Now().Unix())) num, err := strconv.Atoi(os.Args[1]) if err != nil { panic(err) } sim := simulator.New(num, 10, r, nats.MessageBus, fakeCC) //start all the HM components (make them pipe to stdout) start("listen", false) start("fetch_desired", true) start("analyze", true) start("send", true) start("serve_metrics", false) start("serve_api", false) time.Sleep(time.Second) go Tick(sim) go Fetch() select {} }