Sentry Go Integration,如何指定错误级别?

时间:2018-08-08 17:49:25

标签: go sentry

根据官方文档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来说我看不到。

2 个答案:

答案 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"))
    })