接入 Sentry
package main
import (
"errors"
"github.com/getsentry/sentry-go"
zlssentry "github.com/sohaha/zlsgo-sentry"
"github.com/sohaha/zlsgo/znet"
"github.com/sohaha/zlsgo/zstring"
)
func main() {
r := znet.New()
// 不要在这里异常统一处理
// r.PanicHandler(func(c *znet.Context, err error) {
// e := err.Error()
// c.String(500, "err: "+e)
// })
// 注册中间件
if sentryMiddleware, err := zlssentry.New(zlssentry.Options{
// 上报地址
Dsn: "https://[email protected]/5279448",
// 在这里设置异常统一处理
PanicHandler: func(c *znet.Context, err error) {
e := err.Error()
c.String(500, "err: "+e)
},
}); err != nil {
r.Log.Fatal(err)
} else {
r.Use(sentryMiddleware)
}
r.GET("/", func(c *znet.Context) {
// 手动上报异常
sentry.CaptureException(errors.New("这是一个错误"))
// 手动上报信息
sentry.CaptureMessage("这是一个信息")
c.JSON(200, znet.Data{"message": "Hello World"})
})
// 模拟触发发生异常的请求
r.Any("/panic", func(c *znet.Context) {
err := "模拟一个恐慌" + zstring.Rand(5)
panic(err)
})
znet.Run()
}