此页面需要javascript支持,请在浏览器中启用javascript

sentry前端监控 工具类(1)

utils
browser
sentry
共543个字,阅读时间 3 分钟
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://icebreaker.top/articles/2021/1/27-sentry-utils-1

梳理一下

前面几天,我们已知 hub 是一个全局的 stack , 里面带作用域和对应平台的 client 实例

在初始化的时候,将构造方法传入,监控时在不同平台使用不同的适配罢了

而很多针对不同 framework 的包,也不过是针对这些框架的 钩子,或者自带的错误处理进行收集

今天来看个轻松的工具类

@sentry/utils 里文件很多大体如下

  • async : forget 打印错误并且 resolve
  • browser : htmlTreeAsString 看名字也知道
  • dsn : 处理监控 endpoint 的,传入的一个 url 会被解构
  • error : 自定义 SentryError 错误的,有意思的是,git 记录上显示写的人 叫 木土羽 有看不懂的点,贴一下 error
import { setPrototypeOf } from './polyfill';

/** An error emitted by Sentry SDKs and related utilities. */
export class SentryError extends Error {
  /** Display name of this error instance. */
  public name: string;

  public constructor(public message: string) {
    super(message);
    //下面的new.啥看不懂,方言还是语法糖??
    this.name = new.target.prototype.constructor.name;
    setPrototypeOf(this, new.target.prototype);
  }
}
  • index : 没啥说的
  • instrument : 大量的劫持,很值得说,会单独写
  • is : 一些判断方法,也值得一说
  • logger : 自定义的 Logger,挂在全局 __SENTRY__
  • Memo : 光看名字是看不懂的,进去一看。

Memo class used for decycle json objects. decycle 是归队的意思?

  • misc : 也值得讲一讲
  • node : node 相关的判断和提取信息
  • object : fill 方法也值得好好讲讲
  • path : 自己实现了基本方法
  • polyfill : 垫片
  • promisebuffer : 一个 promiselike 的泛型数组
  • stacktrace : 拿方法名字,没有就 <anonymous>
  • string : 处理字符串
  • supports : 判断环境是否支持,写法也很有趣 try/catch + new
  • syncpromise : 同步的 promise?sentry 自己实现了一套 A+ 方案,值得一看并和 bluebird 进行比较
    我猜他自己实现一套,主要还是怕全局的印象到吧,毕竟一个环境全局的 promise 可以随便劫持
  • time : 时间处理主要就是 perf_hooks performance Date

列举了很多值得细看的,下一篇文章会一个一个 function 去看,去理解