根据官方文档https://docs.sentry.io/clients/go/,您可以使用以下命令从golang项目中记录Sentry中的错误:
// For Errors
raven.CapturePanic(func() {
// do all of the scary things here
}, nil)
// For panic
if err != nil {
raven.CaptureErrorAndWait(err, nil)
log.Panic(err)
}
这就像一个超级按钮,问题出在Sentry中,两个功能都以“错误”级别记录。谁知道如何为每个呼叫指定日志记录级别?在Python中非常明确,但对于Go来说我看不到。
答案 0 :(得分:0)
我遵循了评论中的建议,并提出了以下建议:
// sentryErrorCapture sends error data to Sentry asynchronously. Use for non-Fatal errors.
var sentryErrorCapture = func(err error, severity raven.Severity, tags map[string]string, interfaces ...raven.Interface) string {
packet := newSentryPackage(err, severity, tags, interfaces...)
eventID, _ := raven.Capture(packet, tags)
return eventID
}
func newSentryPackage(err error, severity raven.Severity, tags map[string]string, interfaces ...raven.Interface) (packet *raven.Packet) {
interfaces = append(interfaces,
raven.NewException(err, raven.GetOrNewStacktrace(err, 1, 3, raven.IncludePaths())))
packet = &raven.Packet{
Message: err.Error(),
Level: severity,
Interfaces: interfaces,
Extra: getSentryExtraInfo(),
}
return
}
当我想记录一个错误时指定我调用的级别: sentryErrorCapture(err,raven.ERROR,nil)。
答案 1 :(得分:0)
使用sentry-go
SDK,在合并范围上设置级别。
文档:
示例:
sentry.WithScope(func(scope *sentry.Scope) {
scope.SetLevel(sentry.LevelFatal)
sentry.CaptureException(errors.New("example error"))
})