sentry 是一个日志平台,分为客户端和服务端,客户端(目前客户端有Python, PHP, C#, Ruby等多种语言)就嵌入在你的应用程序中间,程序出现异常.。它专门用于监视错误和提取执行适当的事后操作所需的所有信息, 而无需使用标准用户反馈循环的任何麻烦。
这个是主页面
首先我们先注册登录一下, 接着创建一下项目生成 token. 点击头像左下角,选择API,生成token,勾选project:write权限
基础配置
安装 sentry 对应的命令行管理工具 sentry-cli
复制 npm i -g @sentry/cli
sentry-cli -V // 检查版本
安装好之后可以登录
输入一下命令配置
复制 vi /Users/sjh/.sentryclirc
上传 source map
接着配置 sentry-cli releases files test004 upload-sourcemaps --url-prefix 'http://172.18.8.33:5000/static/js' './build/static/js/'
成功的话会出现这个
如果出现 error: project not found 可以输入一下命令
这是我们配置的详细信息, 可以对一下是否写错
复制 sentry-cli projects list
查看下项目的对应名称是否输错
2)清空 SourceMap 文件
复制 sentry-cli releases files staging@1.0.1 delete --all
上传成功后我们可以在页面看到这个
release控制
复制 sentry-cli releases -o 组织 -p 项目 new staging@1.0.1
# 这里的 staging@1.0.1 就是我们指定的版本号.
# -o -p可以通过页面左上角可以看到。现在我们可以通过创建多个版本号来进行异常分类。 同时,也可以通过页面中"Releases"查看是否创建成功
复制 # 安装raven - js
npm install raven - js--save
# 回到前端项目中, 在config添加对应的release, 指定版本后, 每次上报的异常就会分类到该版本下。
import Raven from 'raven-js';
Raven.config(DSN, {
release: 'staging@1.0.1'
}).install()
复制 sentry-cli releases -o 组织 -p 项目 delete staging@1.0.1
# 注意 删除某个release时需要将其下的异常处理掉,并将该版本的sourcemap文件清空
# 完成上面两步可能还要等待2小时才能删除,不然会报错:该版本还有其它依赖。
vue
复制 import * as Sentry from '@sentry/browser';
d;
Sentry.init({
dsn: 'https://3ab8eff44adc41bdb4b7b3abeb9af39e@o209216.ingest.sentry.io/5304337',
integrations: [new VueIntegration({
Vue,
attachProps: true
})],
});
Vue.prototype.Sentry = Sentry // 在捕获错误的界面需要用到Sentry
接着在 webpack 中配置
复制 configureWebpack: {
plugins: [
new SentryCliPlugin({
include: "../game-developer-web/src/main/webapp/resources/dist", // 作用的文件夹(打包好的文件夹)
release: process.env.RELEASE_VERSION, // 版本号
configFile: "sentry.properties",
ignore: ['node_modules'],
urlPrefix: "../game-developer-web/src/main/webapp/resources/dist" // 线上项目的文件夹名
})
]
}
react
对应的 react 项目配置很简单
在 index.js 引入
复制 import * as serviceWorker from './serviceWorker';
import * as Sentry from '@sentry/browser';
Sentry.init({
release: 'test004',
dsn: "https://b0e87f818a464f319892f9c0eeb5e39e@o209216.ingest.sentry.io/5303156",
release: 'test004',
beforeSend(event, hint) {
// Check if it is an exception, and if so, show the report dialog
if (event.exception) {
Sentry.showReportDialog({
eventId: event.event_id
});
}
return event;
}
});