《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Sentry 是一个开发人员优先的错误跟踪和性能监控平台。
Sentry 是一个开发人员优先的错误跟踪和性能监控平台,可帮助开发人员了解真正重要的问题、更快地解决问题并不断了解他们的应用程序。
Sentry Java SDK 可以与 Kotlin、Scala 和其他 JVM 语言一起使用。代码示例通常以 Java 和 Kotlin 的形式提供。
Sentry 通过在应用程序运行时中使用 SDK 来捕获数据。
io.sentry
sentry
6.2.1
如果您使用多个 Sentry 依赖项,则可以添加物料清单以避免指定每个依赖项的版本。
应在应用程序的生命周期中尽早进行配置。
import io.sentry.Sentry;
Sentry.init(options -> {
options.setDsn("https://examplePublicKey@o0.ingest.sentry.io/0");
});此代码段包含一个故意错误,因此您可以在设置后立即测试一切是否正常:
import io.sentry.Sentry;
try {
throw new Exception("This is a test.");
} catch (Exception e) {
Sentry.captureException(e);
}在此页面上,我们让您使用 Sentry 的 SDK 启动并运行,以便它会自动报告您的应用程序中的错误和异常。
Sentry 通过在应用程序运行时中使用 SDK 来捕获数据。
# Using yarn
yarn add @sentry/node @sentry/tracing
# Using npm
npm install --save @sentry/node @sentry/tracing完成此操作后,Sentry 的 Node SDK 将捕获所有事务和未处理的异常。
import * as Sentry from "@sentry/node";
import "@sentry/tracing";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
tracesSampleRate: 1.0,
});此代码段包含一个故意错误,因此您可以在设置后立即测试一切是否正常:
const transaction = Sentry.startTransaction({
op: "test",
name: "My First Test Transaction",
});
setTimeout(() => {
try {
foo();
} catch (e) {
Sentry.captureException(e);
} finally {
transaction.finish();
}
}, 99);要安装 Android SDK,请将其添加到您的build.gradle文件中:
// Make sure mavenCentral is there.
repositories {
mavenCentral()
}
// Enable Java 1.8 source compatibility if you haven't yet.
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
// Add Sentry's SDK as a dependency.
dependencies {
implementation 'io.sentry:sentry-android:6.2.1'
}配置通过AndroidManifest.xml:
此代码段包含一个故意错误,因此您可以在设置后立即测试一切是否正常:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.lang.Exception;
import io.sentry.Sentry;
public class MyActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
throw new Exception("This is a test.");
} catch (Exception e) {
Sentry.captureException(e);
}
}
}身份验证令牌
身份验证令牌使用 auth 标头传递,并用于通过 API 以用户或组织帐户身份进行身份验证。在我们的文档中,我们有几个出现在大括号或 V 形之间的占位符,例如{API_KEY}or
curl -H 'Authorization: Bearer {TOKEN}' https://sentry.io/api/0/projects/如果您的身份验证令牌是1a2b3c,那么命令应该是:
curl -H 'Authorization: Bearer 1a2b3c' https://sentry.io/api/0/projects/DSN 身份验证
某些 API 端点可能允许基于 DSN 的身份验证。这通常非常有限,并且端点将描述其是否受支持。这与承载令牌身份验证类似,但使用您的 DSN(客户端密钥)。
curl -H 'Authorization: DSN {DSN}' https://sentry.io/api/0/projects/API 中的分页是通过 Link 标头标准处理的:
curl -i https://sentry.io/api/0/projects/1/groups/支持时,将始终为上一页和下一页返回游标,即使这些页面上没有结果也是如此。这允许您对 API 进行查询以获取尚未发现的结果。一个例子是当你实现轮询行为并且你想看看是否有任何新数据时。我们返回一个results="[true|false]"指标来确定您是否真的需要分页。
分页示例
以下是使用此 API 端点的分页示例:
https://docs.sentry.io/api/events/list-an-issues-events/此示例中的 HTTP 请求针对该问题返回 100 个事件,并在响应中包含以下链接标头:
; rel="previous"; results="false"; cursor="0:0:1", ; rel="next"; results="true"; cursor="0:100:0" 链接响应中的一个 URL 具有rel=next,它指示下一个结果页面。它也有results=true,这意味着有更多的结果。
基于此,下一个请求是GET
此请求将再次返回该问题的下 100 个事件,并带有以下链接标头:
; rel="previous"; results="true"; cursor="0:0:1", ; rel="next"; results="true"; cursor="0:200:0" 重复该过程,直到 URL 具有指示最后一页rel=next的标志。results=false
cursor 的三个值是:游标标识符(整数,通常为 0)、行偏移量和 is_prev(1 或 0)。
—END—
开源协议:View license
开源地址:https://github.com/getsentry/sentry
| 留言与评论(共有 0 条评论) “” |