npm i --save nativescript-sentry
- 版本: 2.0.1
- GitHub: https://github.com/FinanzRitter/nativescript-sentry
- NPM: https://npmjs.net.cn/package/nativescript-sentry
- 下载
- 昨天: 1
- 上周: 11
- 上个月: 123
Sentry.io for NativeScript
使用 sentry-android 和 sentry-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()
方法已被弃用,推荐使用captureMessage
或captureException
功能
- 转向混合方法,同时支持客户端(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(对原始作者帮助很大!)