Skip to content

Commit 51ac74c

Browse files
committed
report to sentry
1 parent a8b2981 commit 51ac74c

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

log/log.go

+14-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"github.com/cockroachdb/errors"
1111
"github.com/projecteru2/core/types"
1212

13-
"github.com/getsentry/sentry-go"
1413
"github.com/rs/zerolog"
1514
"google.golang.org/grpc/peer"
1615
)
@@ -30,6 +29,9 @@ func SetupLog(l string) error {
3029
TimeFormat: time.RFC822,
3130
}).With().Timestamp().Logger()
3231
rslog.Level(level)
32+
zerolog.ErrorStackMarshaler = func(err error) interface{} {
33+
return errors.GetSafeDetails(err).SafeDetails
34+
}
3335
globalLogger = rslog
3436

3537
return nil
@@ -38,7 +40,7 @@ func SetupLog(l string) error {
3840
// Fatalf forwards to sentry
3941
func Fatalf(ctx context.Context, err error, format string, args ...interface{}) {
4042
args = argsValidate(args)
41-
sentry.CaptureMessage(fmt.Sprintf(genSentryTracingInfo(ctx)+format, args...))
43+
reportToSentry(ctx, err, format, args)
4244
globalLogger.Fatal().Err(err).Msgf(format, args...)
4345
}
4446

@@ -81,7 +83,7 @@ func Errorf(ctx context.Context, err error, format string, args ...interface{})
8183
if err == nil {
8284
return
8385
}
84-
sentry.CaptureMessage(fmt.Sprintf(genSentryTracingInfo(ctx)+format, args...))
86+
reportToSentry(ctx, err, format, args)
8587
errorEvent(err).Msgf(format, args...)
8688
}
8789

@@ -121,7 +123,7 @@ func (f Fields) Errorf(ctx context.Context, err error, format string, args ...in
121123
if err == nil {
122124
return
123125
}
124-
sentry.CaptureMessage(fmt.Sprintf(genSentryTracingInfo(ctx)+format, args...))
126+
reportToSentry(ctx, err, format, args)
125127
errorEvent(err).Fields(f.kv).Msgf(format, args...)
126128
}
127129

@@ -161,7 +163,7 @@ func errorEvent(err error) *zerolog.Event {
161163
if err != nil {
162164
err = errors.WithStack(err)
163165
}
164-
return globalLogger.Error().Err(err)
166+
return globalLogger.Error().Stack().Err(err)
165167
}
166168

167169
func argsValidate(args []interface{}) []interface{} {
@@ -170,3 +172,10 @@ func argsValidate(args []interface{}) []interface{} {
170172
}
171173
return []interface{}{""}
172174
}
175+
176+
func reportToSentry(ctx context.Context, err error, format string, args ...interface{}) { //nolint
177+
err = errors.Wrap(err, fmt.Sprintf(genSentryTracingInfo(ctx)+format, args...))
178+
if eventID := errors.ReportError(err); eventID != "" {
179+
Infof(ctx, "Report to Sentry ID: %s", eventID)
180+
}
181+
}

utils/sentry.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ func SentryDefer() {
2222
return
2323
}
2424
defer sentry.Flush(2 * time.Second)
25-
if err := recover(); err != nil {
26-
sentry.CaptureMessage(fmt.Sprintf("%+v: %s", err, debug.Stack()))
27-
panic(err)
25+
if r := recover(); r != nil {
26+
sentry.CaptureMessage(fmt.Sprintf("%+v: %s", r, debug.Stack()))
27+
panic(r)
2828
}
2929
}

0 commit comments

Comments
 (0)