package main import ( "net/http" "time" "axis_timelapse/cmd" "axis_timelapse/config" "github.com/getsentry/sentry-go" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) func main() { zerolog.TimeFieldFormat = zerolog.TimeFormatUnix zerolog.SetGlobalLevel(zerolog.InfoLevel) //// ***** Start Sentry ***** //// log.Info().Msg(config.Project + ": Initializing Error Reporting.") sentrySyncTransport := sentry.NewHTTPSyncTransport() sentrySyncTransport.Timeout = time.Second * 3 err := sentry.Init(sentry.ClientOptions{ Dsn: config.SentryDSN, Environment: "Production", Release: config.Project + "@" + config.Version, Debug: false, AttachStacktrace: true, Transport: sentrySyncTransport, BeforeSend: func(event *sentry.Event, hint *sentry.EventHint) *sentry.Event { if hint.Context != nil { if req, ok := hint.Context.Value(sentry.RequestContextKey).(*http.Request); ok { log.Print(req) } } log.Print(event) return event }, }) if err != nil { log.Fatal().Err(err).Msgf("Sentry initialization failed.") } // Flush buffered events before the program terminates. // Set the timeout to the maximum duration the program can afford to wait. defer sentry.Flush(2 * time.Second) //// ***** End Sentry ***** //// cmd.Execute() }