diff --git a/sentry.go b/sentry.go index 847537d7ade0a5afa9c8081159eccf962352dee3_c2VudHJ5Lmdv..46674693735b36d2c5706fee66a6594dcd132c2e_c2VudHJ5Lmdv 100644 --- a/sentry.go +++ b/sentry.go @@ -3,7 +3,6 @@ import ( "bytes" "io" - "time" "github.com/getsentry/sentry-go" jsoniter "github.com/json-iterator/go" @@ -7,9 +6,8 @@ "github.com/getsentry/sentry-go" jsoniter "github.com/json-iterator/go" - "github.com/rs/zerolog/log" ) // SentryOptions ... type SentryOptions struct { SentryDSN func(string) `long:"dsn" env:"DSN" ini-name:"dsn" description:"Sentry DSN"` @@ -11,10 +9,7 @@ ) // SentryOptions ... type SentryOptions struct { SentryDSN func(string) `long:"dsn" env:"DSN" ini-name:"dsn" description:"Sentry DSN"` - - client *sentry.Client - hub *sentry.Hub } @@ -19,7 +14,16 @@ } -// GetClient returns the sentry client -func (o SentryOptions) GetClient() *sentry.Client { - return o.client -} +// NewSentryOptions ... +func NewSentryOptions(loggingOptions *LoggingOptions) *SentryOptions { + sentryOptions := SentryOptions{} + sentryOptions.SentryDSN = func(dsn string) { + log := loggingOptions.Logger() + client, err := sentry.NewClient(sentry.ClientOptions{ + Dsn: dsn, + }) + if err != nil { + log.Err(err).Msg("Could not initialize sentry") + return + } + hub := sentry.NewHub(client, sentry.NewScope()) @@ -25,7 +29,13 @@ -// GetHub returns the sentry hub -func (o SentryOptions) GetHub() *sentry.Hub { - return o.hub + loggingOptions.AddLogWrapper( + func(next io.Writer) io.Writer { + return SentryLogger{hub, next} + }) + //OnShutdown(func() { + //hub.Flush(time.Second) + //}) + } + return &sentryOptions } // SentryLogger ... @@ -117,31 +127,3 @@ } return l.next.Write(p) } - -// Setup ... -func (o *SentryOptions) Setup(loggingOptions *LoggingOptions, environment *string) { - o.SentryDSN = func(dsn string) { - client, err := sentry.NewClient(sentry.ClientOptions{ - Environment: *environment, - Dsn: dsn, - }) - if err != nil { - log.Err(err).Msg("Could not initialize sentry") - return - } - o.client = client - o.hub = sentry.NewHub(client, sentry.NewScope()) - loggingOptions.AddLogWrapper(func(next io.Writer) io.Writer { - return SentryLogger{o.hub, next} - }) - } -} - -// Shutdown ... -func (o SentryOptions) Shutdown() { - if o.hub != nil { - o.hub.Flush(time.Second) - o.hub = nil - o.client = nil - } -} diff --git a/templates/server/cmd.gotmpl b/templates/server/cmd.gotmpl index 847537d7ade0a5afa9c8081159eccf962352dee3_dGVtcGxhdGVzL3NlcnZlci9jbWQuZ290bXBs..46674693735b36d2c5706fee66a6594dcd132c2e_dGVtcGxhdGVzL3NlcnZlci9jbWQuZ290bXBs 100644 --- a/templates/server/cmd.gotmpl +++ b/templates/server/cmd.gotmpl @@ -17,6 +17,7 @@ LoggingOptions = orusapi.MustLoggingOptions(orusapi.NewLoggingOptions(&Logger, os.Stdout)) DatabaseOptions = &database.Options{} ConfigFileOption = &ConfigFile{} + SentryOptions = orusapi.NewSentryOptions(LoggingOptions) parser = flags.NewNamedParser("{{ dasherize (pascalize .Name) }}", flags.HelpFlag|flags.PassDoubleDash) bootstrapParser = flags.NewNamedParser("{{ dasherize (pascalize .Name) }}", flags.IgnoreUnknown) @@ -67,6 +68,7 @@ } g.Namespace="log" g.EnvNamespace="LOG" + g, err = parser.AddGroup("Database", "Database options", DatabaseOptions) if err != nil { panic(err) @@ -74,6 +76,13 @@ g.Namespace="db" g.EnvNamespace="DB" + g, err = parser.AddGroup("Sentry", "Sentry options", SentryOptions) + if err != nil { + panic(err) + } + g.Namespace="sentry" + g.EnvNamespace="SENTRY" + parser.AddCommand("generate-config", "Generate a configuration file", "", orusapi.NewGenerateConfigCmd(parser)) bootstrapParser.NamespaceDelimiter = "-"