nativescript-sentry
由 sc85 开发 | v2.0.1
Sentry.io NativeScript 插件。
npm i --save nativescript-sentry

Sentry.io for NativeScript

npm npm

使用 sentry-androidsentry-cocoa 捕获原生错误/堆栈跟踪并将其发送到 Sentry 服务器的 NativeScript 插件。


:seven: – 这是与 NativeScript 7 兼容的 v2 版本的文档
:construction: – 目前处于 alpha 状态,请谨慎使用!
:six: – 如果您正在使用 NativeScript 6,请使用 v1 版本


安装

ns plugin add nativescript-sentry

配置

Android

将以下行添加到您的 AndroidManifest.xml 文件中的 <application>-tag

<meta-data android:name="io.sentry.dsn" android:value="__YOUR_DSN_HERE__" />

没有 Angular

import { Sentry } from 'nativescript-sentry';
const dsn = 'https://<key>:<secret>@host/<project>';
Sentry.init(dsn);

带有 Angular

import { SentryModule } from 'nativescript-sentry/angular';

NgModule({
// ...
imports: [
SentryModule.forRoot({
dsn: 'https://<key>:<secret>@host/<project>',
discardUncaughtJsExceptions: true
})
]
// ...
});

注意:此插件为您的 Angular 应用程序添加了自定义 ErrorHandler

使用方法

捕获异常

Sentry.captureException(exeption: Error, options?: ExceptionOptions);
export interface ExceptionOptions {
// Object of additional Key/value pairs which generate breakdowns charts and search filters in Sentry.
tags?: object;

// Object of unstructured data which is stored with events.
extra?: object;
}

示例

try {
throw new Error('Whoops!');
} catch (error) {
Sentry.captureException(error, {});
}

捕获消息

Sentry.captureMessage(message: string, options?: MessageOptions)
export interface MessageOptions {
level?: Level;

// Object of additional Key/value pairs which generate breakdowns charts and search filters.
tags?: object;

// Object of unstructured data which is stored with events.
extra?: object;
}

export enum Level {
Fatal = 'fatal',
Error = 'error',
Warning = 'warning',
Info = 'info',
Debug = 'debug'
}

捕获导航面包屑

Sentry.captureBreadcrumb(breadcrumb: BreadCrumb)
export interface BreadCrumb {
message: string;
category: string;
level: Level;
}

设置用户

Sentry.setContextUser(user: SentryUser)
export interface SentryUser {
id: string;
email?: string;
username?: string;
}

设置标签

Sentry.setContextTags(tags: object)

设置额外信息

Sentry.setContextExtra(extra: object)

清除上下文(用户、标签、额外信息)

Sentry.clearContext();

故障排除和重要说明

原生异常/崩溃

如果您有一个 原生异常 并且应用程序退出,插件将保存日志并在 下一个应用程序启动 时发送它,这是原生插件实现的预期行为。

Android SLF4J 日志错误

Sentry 在 Android 上有一个可选的依赖项 SLF4J,如果没有,将会记录关于其不在应用程序中的错误。

System.err: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
System.err: SLF4J: Defaulting to no-operation (NOP) logger implementation
System.err: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

要消除此日志警告,您可以在应用程序的 App_Resources/Android/app.gradle 文件中添加一个依赖项

compile 'org.slf4j:slf4j-nop:1.7.25'

in the dependencies. See the demo app.

示例应用程序

要运行和测试示例应用程序,您需要在以下文件中将占位符 __YOUR_DSN_HERE__ 替换为您自己的 DSN

  • demo/App_Resources/Android/src/main/AndroidManifest.xml
  • demo/app/app.ts
  • demo-ng/App_Resources/Android/src/main/AndroidManifest.xml
  • demo-ng/src/app.module.ts

变更日志

2.0.1 - (25.03.2021)

  • 修复 Angular 的问题
  • 修复 Android 上用户数据的问题

感谢 @jeremypele@jerbob92

2.0.0-alpha.1 – (10.09.2020)

  • 更新 Android SDK
  • 针对 NativeScript 7 的更新
  • 为示例应用程序添加工作流程

感谢 @bradmartin

1.10.3 – (10.09.2020)

  • 在 npmjs.org 上以原始名称发布新版本

1.10.2 – (17.04.2020)

  • 修复 GitHub 工作流以使用现有的发布脚本

1.10.1 – (17.04.2020)

  • 为 npm 发布设置 GitHub 工作流

1.10.0 – (15.04.2020)

  • 升级到最新的原生 SDK 版本
  • 在写入 Extras(Android)之前将数据字符串化

从未维护的包 danielgek/nativescript-sentry 分支的包。已转让对原始 npm 包的访问。感谢 @danielgek 对此插件所做的原始工作!


1.8.0 – (02.02.2019)

  • 升级到最新的原生 SDK 版本
  • 实现了改进的数据转换(#22)
  • 向 SentryUser 添加数据

感谢 @bradmartin@jerbob92

1.6.1 – (28.11.2018)

  • 由于 @bradmartin 的贡献,回到了原生方法
  • 更新依赖项
  • 更新测试应用程序
  • 为iOS工作的原生面包屑导航
  • 感谢 @kvnvelasco 修复dsn初始化问题

1.5.0 – (11.12.2017)

重大变更

  • capture() 方法已被弃用,推荐使用 captureMessagecaptureException

功能

  • 转向混合方法,同时支持客户端(Web/原生)
  • 面包屑
  • 标签
  • 用户信息
  • 为每个事件设置标签和额外信息

1.3.0 – (28.08.2017)

  • 修复Angular应用的Aot编译问题
  • 感谢 @muratcorlu 修复拼写错误

1.2.0 – (02.08.2017)

  • 更新示例依赖
  • 更新iOS和Android的本地依赖
  • 修复iOS事件捕获

1.1.0 – (24.07.2017)

  • 修复字符串化问题
  • 修复Angular错误处理器

致谢

  • @danielgek:作为本插件的原始作者 danielgek/nativescript-sentry
  • @hypery2k:其 nativescript-fabric(对原始作者帮助很大!)