Page tree
Skip to end of metadata
Go to start of metadata

Raven is a Go client for the Sentry event/error logging system.

安装

go get github.com/getsentry/raven-go


示例

// 如果gin发生错误或者panic,则收集错误信息然后发送到sentry上
// http_code会返回5xx
func (ja *JsonApi) Recovery(client *raven.Client) gin.HandlerFunc {
    return func(c *gin.Context) {
        defer func() {
            for _, item := range c.Errors {
                packet := raven.NewPacket(
                    item.Err.Error(),
                    &raven.Message{
                        Message: item.Err.Error(),
                        Params:  []interface{}{item.Meta},
                    },
                    raven.NewHttp(c.Request),
                )
                _, ch := client.Capture(packet, nil)
                if err := <-ch; err != nil {
                    log.Error("Recovery - error: ", err)
                }
            }
 
            if rval := recover(); rval != nil {
                c.Writer.WriteHeader(http.StatusInternalServerError)
 
                message := fmt.Sprint(rval)
                trace := raven.NewStacktrace(1, 0, []string{"main", "git.umlife.net"})
                packet := raven.NewPacket(message, raven.NewException(errors.New(message), trace), raven.NewHttp(c.Request))
                client.Capture(packet, nil)
                log.Error("Recovery - panic: ", message)
            }
        }()
        c.Next()
    }
}
  • No labels
Write a comment...