Android Sentry 系列技术贴,第二个模块结合业务需求配置选项

根据业务需求自行配置

SentryAndroid.init(ApplicationSingleton.getInstance.getApplication(), new Sentry.OptionsConfiguration() {

@Override

                    public void configure(@NotNull SentryAndroidOptions options) {

                        options.setDsn("根据自己的项目配置Dsn");

                        // 启用后,堆栈跟踪会自动附加到所有记录的消息中。堆栈跟踪始终附加到异常;但是,设置此选项后,堆栈跟踪也会随消息一起发送。例如,此选项意味着堆栈跟踪显示在所有日志消息旁边。

                        //这个选项是on默认的。

                        //Sentry 中的分组对于有堆栈跟踪和没有堆栈跟踪的事件是不同的。因此,当您为某些事件启用或禁用此标志时,您将获得新的组。

                        // options.setAttachStacktrace(true);

                        // 此参数控制集成是否应捕获 HTTP 请求主体。它可以设置为以下值之一:

                        //

                        //never: 永远不会发送请求体。

                        //small:只会捕获小的请求体。small 的截止值取决于 SDK(通常为 4KB)。

                        //medium:将捕获中小型请求(通常为 10KB)。

                        //always: SDK 会一直抓取请求体,只要Sentry 能理解它。

                        options.setMaxRequestBodySize(SentryOptions.RequestSize.ALWAYS);

                        // 将此布尔值设置为false禁用发送客户端报告。客户端报告是一种协议功能,可让客户端向 Sentry 发送有关其自身的状态报告。它们目前主要用于为从未发送过的事件发出结果。

                        // 一定要关闭!!!.和爽哥对过,如果打开会把自己的信息发送给sentry,涉及到我们的数据安全问题以及,信息跨境问题.

                        options.setSendClientReports(false);

                        // 自动添加面包屑

                        options.enableAllAutoBreadcrumbs(true);

                        // 全面展示时间

                        //(6.14.0 版新增)

                        //Time to full display 通过为 Activity 的每次启动添加一个跨度,可以深入了解您的 Activity 启动和加载其所有内容需要多长时间。SDK 将跨度操作ui.load.full-display和跨度描述设置为 Activity 的名称后跟full display,例如,MainActivity full display。

                        //Span 在每个 Activity 启动时开始,定义为第一个 Activity 的应用程序启动,以及onPause每个后续 Activity 启动的前一个 Activity 的方法。

                        //Time to full display 默认情况下是禁用的,但您可以通过设置启用它:

                        options.setEnableTimeToFullDisplayTracing(true);

                        // 为用户交互启用自动面包屑(点击、滑动、滚动)

                        options.setEnableUserInteractionTracing(true);

                        // 发生错误时截取应用程序的屏幕截图并将其作为附件包含在内。在我们的屏幕截图文档中了解有关使用屏幕截图丰富事件的更多信息。

                        // https://docs.sentry.io/platforms/android/enriching-events/screenshots/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F

                        options.setAttachScreenshot(true);

                        // 发生错误时呈现应用程序整个视图层次结构的 JSON 表示并将其作为附件包含在内。在我们的视图层次结构文档中了解有关使用视图层次结构丰富事件的更多信息。

                        // https://docs.sentry.io/platforms/android/enriching-events/viewhierarchy/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F

                        options.setAttachViewHierarchy(true);

                        // ANR 的监控开关

                        options.setAnrEnabled(true);

                        // 配置错误事件的采样率,范围为0.0到1.0。默认值是1.0表示发送 100% 的错误事件。如果设置为0.1只有 10% 的错误事件将被发送。事件是随机选择的。

                        // https://docs.sentry.io/platforms/android/configuration/sampling/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F

                        // 可以根据不同业务需求来调整采样率,比如在语音房页面采样率为1.0.在修改用户资料页面采样率为0.1

                        options.setSampleRate(1.0);

                        // 在开始交易时启用分析,在生产环境中调整

                        options.setProfilesSampleRate(1.0);

                        // 一个介于 0 和 1 之间的数字,控制将给定交易发送到 Sentry 的百分比机会。(0 代表 0%,而 1 代表 100%。)同样适用于应用程序中创建的所有交易。tracesSampler必须定义这个或才能启用 追踪记录请求期间发生的事件的过程,通常跨多个服务。.

                        options.setTracesSampleRate(1.0);

                        // 指定在报告 ANR 之前线程应该被阻塞多长时间

                        options.setAnrTimeoutIntervalMillis(3000);

                        //会话

                        //会话表示用户和应用程序之间的交互。会话包含一个时间戳、一个状态(会话是否正常或崩溃),并且始终与发布相关联。大多数哨兵 SDK 可以自动管理会话。

                        //要从健康数据中获益,您必须至少使用 2.1.0 版本的 Android SDK,并在 SDK 的初始化选项中启用发布健康指标的收集。默认情况下,在我们的 Android 3.0 及更高版本中会捕获发布运行状况,除非您在 SDK 的初始化选项中特别禁用收集它。

                        //默认情况下,一旦应用程序在后台运行超过 30 秒,会话就会终止。您可以使用名为 的选项更改超时sessionTrackingIntervalMillis。它需要以毫秒为单位的数量。例如,将其配置为 60 秒:

                        options.setSessionTrackingIntervalMillis(60000);

                        // 设置为 时true,SDK 将向 Sentry 发送会话事件。所有浏览器 SDK 都支持这一点,每次页面加载和页面导航到 Sentry 都会发出一个会话。在移动 SDK 中,当应用进入后台超过 30 秒时,会话将结束。

                        options.setEnableAutoSessionTracking(true);

                        // 打开或关闭调试模式。如果启用调试,如果发送事件出现问题,SDK 将尝试打印出有用的调试信息。默认值为始终false。通常不建议在生产中打开它,尽管打开debug模式不会引起任何安全问题。

                        options.setDebug(DebugLog.logIsOpen);

                        // 启用debug模式使 SDK 生成尽可能多的诊断数据。但是,如果您希望降低 Sentry SDK 诊断日志的详细程度,请配置此选项以设置适当的级别:

                        //

                        //debug: default最详细的模式

                        //info:信息性消息

                        //warning: 警告某些事情可能不对

                        //error: 只打印SDK内部错误

                        //fatal: 只打印严重错误

                        options.setDiagnosticLevel(SentryLevel.DEBUG);

                        // 设置环境。此字符串是自由格式的,默认情况下未设置。一个版本可以与多个环境相关联,以在 UI 中将它们分开(想想stagingvsprod或类似的)。

                        options.setEnvironment(Constant.getAppEnvEnum().getBuildTypePrefix());

                        // https://docs.sentry.io/product/security/mobile-privacy/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F

//                        如果启用此标志,则活动集成会添加某些个人身份信息 (PII)。默认情况下,不发送此类数据。

//                        如果您在移动应用程序中使用 Sentry,请阅读我们关于移动数据隐私的常见问题解答,以帮助了解 Apple App Store 和 Google Play 应用程序隐私详细信息。

//                        这个选项是off默认的。如果您启用此选项,请务必使用我们的敏感数据管理功能手动删除您不想发送的内容。https://docs.sentry.io/platforms/android/data-management/sensitive-data/

                        options.setSendDefaultPii(true);

                        // Activity 的检测一旦启用,就会为每次启动的 Activity 捕获事务。SDK将Transaction名称设置为Activity的名称,例如 ,MainActivity将Transaction操作设置为ui.load。

                        //事务在onCreate调用每个 Activity 的方法之前开始。

                        //默认情况下启用 Activity 的检测,

                        // 事务在每个 Activity 的onResume方法执行后完成。 交易自动完成,但您可以通过设置禁用它

                        options.setEnableActivityLifecycleTracingAutoFinish(true);

                        // 开启ActivityLifecycle Tracing

                        options.setEnableAutoActivityLifecycleTracing(true);

                        // 开启ActivityLifecycle面包屑

                        options.setEnableActivityLifecycleBreadcrumbs(true);

                        //

                        options.addIntegration(new FragmentLifecycleIntegration(ApplicationSingleton.getInstance.getApplication(), true, true));

                        // 此函数使用特定于 SDK 的消息或错误事件对象调用,并可以返回修改后的事件对象,或null跳过报告事件。例如,这可用于在发送前手动剥离 PII。

                        options.setBeforeSend(new SentryOptions.BeforeSendCallback() {

@Override

                            public @Nullable SentryEventexecute(@NotNull SentryEvent event, @NotNull Hint hint) {

// 这个方法是在主线程中执行

                                return event;

                            }

});

                        // 该函数使用 SDK 特定的交易事件对象调用,可以返回修改后的交易事件对象,或者null跳过事件上报。一种可能使用的方法是在发送之前手动剥离 PII。

                        options.setBeforeSendTransaction(new SentryOptions.BeforeSendTransactionCallback() {

@Override

                            public @Nullable SentryTransactionexecute(@org.jetbrains.annotations.NotNull SentryTransaction transaction, @org.jetbrains.annotations.NotNull Hint hint) {

return transaction;

                            }

});

                        // 在将面包屑添加到范围之前,使用特定于 SDK 的面包屑对象调用此函数。当函数没有返回任何内容时,面包屑将被删除。要传递面包屑,请返回第一个参数,其中包含面包屑对象。回调通常会获得第二个参数(称为“提示”),其中包含创建面包屑的原始对象,以进一步自定义面包屑的外观。

                        options.setBeforeBreadcrumb(new SentryOptions.BeforeBreadcrumbCallback() {

@Override

                            public @Nullable Breadcrumbexecute(@org.jetbrains.annotations.NotNull Breadcrumb breadcrumb, @org.jetbrains.annotations.NotNull Hint hint) {

return breadcrumb;

                            }

});

                        // 自定义上下文允许您将任意数据附加到事件。通常,此上下文在其生命周期中捕获的任何问题之间共享。您无法搜索这些,但可以在问题页面上查看它们:附加自定义数据的最佳做法是通过结构化上下文。上下文必须始终是字典或映射,其值可以是任意的。然后,使用setContext并给上下文一个唯一的名称:

                        Sentry.configureScope(new ScopeCallback() {

@Override

                            public void run(@org.jetbrains.annotations.NotNull Scope scope) {

}

});

                    }

});



设置用户信息

User user =new User();

user.setId(“”);

user.setName(“”);

Sentry.setUser(user);



设置Tag

Sentry.setTag(key, value);


配置网络拦截器

OkHttpClient.Builder builder =new OkHttpClient().newBuilder().pingInterval(5, TimeUnit.SECONDS).connectTimeout(30, TimeUnit.SECONDS)// 链接服务器超时时间.addInterceptor(new SentryOkHttpInterceptor());// 写入超时时间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容