// SetupLogging sets up logging. if token is not and empty string a rollbar // hook is added with the environment set to env. The log formatter is set to a // TextFormatter with timestamps disabled, which is suitable for use on Heroku. func SetupLogging(token, env string) { log.SetFormatter(&log.TextFormatter{DisableTimestamp: true}) if token != "" { log.AddHook(&Hook{Client: roll.New(token, env)}) } }
func main() { rollrus.SetupLogging(os.Getenv("ROLLBAR_TOKEN"), os.Getenv("ENVIRONMENT")) config, err := NewIssConfig() if err != nil { log.Fatalln(err) } log.AddHook(&DefaultFieldsHook{log.Fields{"app": "log-iss", "source": config.Deploy}}) auth, err := authenticater.NewBasicAuthFromString(config.Tokens) if err != nil { log.Fatalln(err) } forwarderSet := newForwarderSet(config) shutdownCh := make(shutdownCh) httpServer := newHTTPServer(config, auth, fix, forwarderSet) go awaitShutdownSignals(httpServer.shutdownCh, shutdownCh) go forwarderSet.Run() go func() { if err := httpServer.Run(); err != nil { log.Fatalln("Unable to start HTTP server:", err) } }() if config.LibratoOwner != "" && config.LibratoToken != "" { log.WithField("source", config.LibratoSource).Info("starting librato metrics reporting") go librato.Librato( config.MetricsRegistry, 20*time.Second, config.LibratoOwner, config.LibratoToken, config.LibratoSource, []float64{0.50, 0.95, 0.99}, time.Millisecond, ) } log.WithField("at", "start").Info() <-shutdownCh log.WithField("at", "drain").Info() httpServer.Wait() log.WithField("at", "exit").Info() }