收藏
评论

Sentry 小程序 SDK

希望对你有所帮助和启发

小程序 Sentry SDK (Beta)

特性

除了 Sentry 基础的特性,还提供以下小程序相关特性

  • 记录客户端基本信息
  • 记录页面 request 请求
  • 记录应用生命周期(onAppLaunch, onAppShow, onAppHide)
  • 记录页面导航
  • 记录小程序 api 调用
  • 记录 console 日志
  • 记录应用异常
  • 记录 setTimeout, setInterval 内异常
  • 支持小程序 LogManager

相关链接

使用

安装

  • npm install sentry-mina --save
  • yarn add sentry-mina
  • browser/sentry-mina.js 拷贝到项目中

使用

import * as sentry from "sentry-mina/browser/sentry-mina.js";
// import * as sentry from "sentry-mina";

// config Sentry
sentry.init({
  dsn: ''
})

// Set user information, as well as tags and further extras
Sentry.configureScope(scope => {
  scope.setUser({ id: '4711' });
  scope.setTag('user_mode', 'admin');
  scope.setExtra('battery', 0.7);
  // scope.clear();
});

// Add a breadcrumb for future events
Sentry.addBreadcrumb({
  message: 'My Breadcrumb',
  // ...
});

// Capture exceptions, messages or manual events
Sentry.captureMessage('Hello, world!');
Sentry.captureException(new Error('Good bye'));
Sentry.captureEvent({
  message: 'Manual',
  stacktrace: [
    // ...
  ],
});

INTEGRATIONS

Breadcrumbs

new sentry.Integrations.Breadcrumbs({
	console: true,
	request: true,
	navigation: true,
	api: true,
	lifecycle: true
})
配置 类型 默认值 描述
console Boolean, Array true 是否记录 console 日志,如果值为数组 ['log', 'info'],则只记录数组中所列的日志
request Boolean true 是否记录页面 request 请求
navigation Boolean true 是否记录页面导航信息
api Boolean true 是否记录小程序 API 调用
lifecycle Boolean true 是否记录小程序生命周期变化

TryCatch

捕获并记录 setTimeout, setInterval 内的异常

new sentry.Integrations.TryCatch()

LogManager

将 Sentry 事件数据记录到小程序 LogManager

new sentry.Integrations.LogManager({
	level: 0
})
配置 类型 默认值 描述
level Number 0 取值为0表示是否会把 App、Page 的生命周期函数和 wx 命名空间下的函数调用写入日志,取值为1则不会

GlobalHandlers

记录 app.onError 和 app.onPageNotFound 日志

new sentry.Integrations.GlobalHandlers()

TRANSPORT

目前小程序只支持通过 request 发送日志到服务器,由于小程序 request 有并发限制, sentry-mina 以队列的方式发送日志请求,避免过多占用请求资源。

sentry-mina 发送日志,支持失败重试,默认重试 2 次。可以通过以下方式

sentry.init({
  transportOptions: {
  	retry: 2
  }
})

进行配置。

sentry-mina 会记录未发送的日志,当用户重新进入小程序,会继续发送。

PREVIEW

stack breadcrumbs meta

最后一次编辑于  2019-06-12
收藏

9 个评论

  • 陈式坚
    陈式坚
    2019-06-12

    点个赞 正在使用中

    2019-06-12
    赞同 1
    回复 2
    • 罗马
      罗马
      2019-08-14
      请问楼主是怎样用的?是否支持mpvue
      2019-08-14
      回复
    • 希文Gershwin
      希文Gershwin
      2020-11-16回复罗马
      mpvue不是已经 没人维护了?
      2020-11-16
      回复
  • 乐国磊²⁰²⁰
    乐国磊²⁰²⁰
    2020-04-16

    同一个接口在小程序原生和小程序内嵌h5都有可能调用,sentry报错能定位到具体的原生path或者内嵌h5的链接吗?

    2020-04-16
    赞同
    回复
  • 琮
    2020-02-24

    遇到这种插件冲突情况要怎么解决?

    [non-writable] modification of global variable "Function.prototype.toString" is not allowed when using plugins at app.json.

    Function.prototype.toString = function() {
        for (var t = [], e = 0; e < arguments.length; e++)
        t[e] = arguments[e];
        var n = this.__sentry__ ? this.__sentry_original__ : this;
        return r.apply(n, t)
    }
    
    2020-02-24
    赞同
    回复 2
  • 西红柿
    西红柿
    2019-10-10

    你是在他的基础上再封装了一次么?是不是自己搭建了服务器之后,设置好dsn那些就可以直接用了?还是怎么样,有一个完整的demo么、

    2019-10-10
    赞同
    回复 1
    • yan
      yan
      2019-10-10
      设置好 dsn 直接用就行,接口与官方 sentry 库保持一致
      2019-10-10
      回复
  • 💤
    💤
    2019-09-02

    Unhandled promise rejection TypeError: Cannot read property 'value' of undefined

    真机调试的时候总会报这个错误,而且后台没有记录、开发者工具调试就不存在这个问题,是不是存在bug ?

    2019-09-02
    赞同
    回复 10
    • yan
      yan
      2019-09-02
      你有使用第三方小程序框架吗,比如 mpvue, wepy
      2019-09-02
      1
      回复
    • 💤
      💤
      2019-09-02回复yan
      嗯嗯,我用的mpvue。
      2019-09-02
      回复
    • yan
      yan
      2019-09-02回复💤
      你的 sentry-mina 版本是多少。目前你是第二个反馈 mpvue 使用异常的,应该是有兼容性的问题。不过我使用 mpvue/mpvue-quickstart 测试没发现异常。可以发下 mpvue 的构建配置吗。
      2019-09-02
      回复
    • yan
      yan
      2019-09-02
      可以发我邮箱 yanhaibiao1991@gmail.com
      2019-09-02
      回复
    • 💤
      💤
      2019-09-02回复yan
      好的
      2019-09-02
      回复
    查看更多(5)
  • Boat
    Boat
    2019-08-22

    sentry.captureException在微信开发者工具调试时调用有效,能看到日志,但是真机调试时调用失败,也没有日志被记录,

    引入方式为import * as sentry from 'sentry-mina/browser/sentry-mina.js'

    2019-08-22
    赞同
    回复 5
    • yan
      yan
      2019-08-22
      request 合法域名是否正确配置,真机调试控 vConsole 制台错误信息吗
      2019-08-22
      回复
    • Boat
      Boat
      2019-08-22回复yan
      域名有配置的,真机调试时console控制台有打印错误信息,但是后台没有日志记录
      2019-08-22
      回复
    • yan
      yan
      2019-08-22回复Boat
      network 面板看看有没有请求记录
      2019-08-22
      回复
    • yan
      yan
      2019-09-02
      sentry-mina@0.3.0 版本已经修复
      2019-09-02
      1
      回复
    • Boat
      Boat
      2019-09-03回复yan
      太赞了
      2019-09-03
      回复
  • 健鹅
    健鹅
    2019-01-05

    只引入了包,还未实例化


    // import * as sentry from 'sentry-mina/browser/sentry-mina.js'

    import * as sentry from 'sentry-mina'


    2019-01-05
    赞同
    回复 1
    • yan
      yan
      2019-01-06

       import * as sentry from 'sentry-mina/browser/sentry-mina.js'

      可以用这种方式引入

      2019-01-06
      回复
  • 健鹅
    健鹅
    2019-01-05

    haoba

    按照你demo方式引入了,报错


    thirdScriptError 

     sdk uncaught third Error 

     regeneratorRuntime is not defined 

     ReferenceError: regeneratorRuntime is not defined


    2019-01-05
    赞同
    回复 2
    • 哄哄
      哄哄
      2019-06-03

      估计不支持原生开发

      2019-06-03
      回复
    • 一听
      一听
      2019-08-28
      你是用微信开发者工具吗,试试去:详情->取消勾选“ES6转ES5”,我一开始也遇到这个问题,是这么解决了
      2019-08-28
      回复
  • 健鹅
    健鹅
    2019-01-05

    这是楼主基于sentry 写的微信小程序的sdk吗

    我用的有赞的

    raven-weapp

    死活捕获不到错误日志

    而sentry的web端捕获分分钟搞定啊,崩溃了


    2019-01-05
    赞同
    回复 4
    • Na.snone
      Na.snone
      2019-02-14

      我也在用有赞的,我的是mpvue,各种报错

      2019-02-14
      回复
    • Ho
      Ho
      2019-06-05

      raven本身没报错的话,设置一下transport:wx.request


      2019-06-05
      回复
    • 罗马
      罗马
      2019-08-14
      楼主解决了吗
      2019-08-14
      回复
    • 梧桐树
      梧桐树
      2019-10-30
      遇见一毛一样的问题,我是原生项目
      2019-10-30
      回复
登录 后发表内容