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() } }
Add Comment