根據(jù)業(yè)務(wù)需求自行配置
SentryAndroid.init(ApplicationSingleton.getInstance.getApplication(), new Sentry.OptionsConfiguration() {
@Override
? ? ? ? ? ? ? ? ? ? public void configure(@NotNull SentryAndroidOptions options) {
? ? ? ? ? ? ? ? ? ? ? ? options.setDsn("根據(jù)自己的項(xiàng)目配置Dsn");
? ? ? ? ? ? ? ? ? ? ? ? // 啟用后,堆棧跟蹤會(huì)自動(dòng)附加到所有記錄的消息中俱诸。堆棧跟蹤始終附加到異常菠劝;但是,設(shè)置此選項(xiàng)后睁搭,堆棧跟蹤也會(huì)隨消息一起發(fā)送赶诊。例如,此選項(xiàng)意味著堆棧跟蹤顯示在所有日志消息旁邊园骆。
? ? ? ? ? ? ? ? ? ? ? ? //這個(gè)選項(xiàng)是on默認(rèn)的舔痪。
? ? ? ? ? ? ? ? ? ? ? ? //Sentry 中的分組對(duì)于有堆棧跟蹤和沒(méi)有堆棧跟蹤的事件是不同的。因此锌唾,當(dāng)您為某些事件啟用或禁用此標(biāo)志時(shí)锄码,您將獲得新的組。
? ? ? ? ? ? ? ? ? ? ? ? // options.setAttachStacktrace(true);
? ? ? ? ? ? ? ? ? ? ? ? // 此參數(shù)控制集成是否應(yīng)捕獲 HTTP 請(qǐng)求主體晌涕。它可以設(shè)置為以下值之一:
? ? ? ? ? ? ? ? ? ? ? ? //
? ? ? ? ? ? ? ? ? ? ? ? //never: 永遠(yuǎn)不會(huì)發(fā)送請(qǐng)求體滋捶。
? ? ? ? ? ? ? ? ? ? ? ? //small:只會(huì)捕獲小的請(qǐng)求體。small 的截止值取決于 SDK(通常為 4KB)余黎。
? ? ? ? ? ? ? ? ? ? ? ? //medium:將捕獲中小型請(qǐng)求(通常為 10KB)重窟。
? ? ? ? ? ? ? ? ? ? ? ? //always: SDK 會(huì)一直抓取請(qǐng)求體,只要Sentry 能理解它惧财。
? ? ? ? ? ? ? ? ? ? ? ? options.setMaxRequestBodySize(SentryOptions.RequestSize.ALWAYS);
? ? ? ? ? ? ? ? ? ? ? ? // 將此布爾值設(shè)置為false禁用發(fā)送客戶端報(bào)告巡扇。客戶端報(bào)告是一種協(xié)議功能垮衷,可讓客戶端向 Sentry 發(fā)送有關(guān)其自身的狀態(tài)報(bào)告厅翔。它們目前主要用于為從未發(fā)送過(guò)的事件發(fā)出結(jié)果。
? ? ? ? ? ? ? ? ? ? ? ? // 一定要關(guān)閉!!!.和爽哥對(duì)過(guò),如果打開會(huì)把自己的信息發(fā)送給sentry,涉及到我們的數(shù)據(jù)安全問(wèn)題以及,信息跨境問(wèn)題.
? ? ? ? ? ? ? ? ? ? ? ? options.setSendClientReports(false);
? ? ? ? ? ? ? ? ? ? ? ? // 自動(dòng)添加面包屑
? ? ? ? ? ? ? ? ? ? ? ? options.enableAllAutoBreadcrumbs(true);
? ? ? ? ? ? ? ? ? ? ? ? // 全面展示時(shí)間
? ? ? ? ? ? ? ? ? ? ? ? //(6.14.0 版新增)
? ? ? ? ? ? ? ? ? ? ? ? //Time to full display 通過(guò)為 Activity 的每次啟動(dòng)添加一個(gè)跨度搀突,可以深入了解您的 Activity 啟動(dòng)和加載其所有內(nèi)容需要多長(zhǎng)時(shí)間刀闷。SDK 將跨度操作ui.load.full-display和跨度描述設(shè)置為 Activity 的名稱后跟full display,例如描姚,MainActivity full display涩赢。
? ? ? ? ? ? ? ? ? ? ? ? //Span 在每個(gè) Activity 啟動(dòng)時(shí)開始,定義為第一個(gè) Activity 的應(yīng)用程序啟動(dòng)轩勘,以及onPause每個(gè)后續(xù) Activity 啟動(dòng)的前一個(gè) Activity 的方法筒扒。
? ? ? ? ? ? ? ? ? ? ? ? //Time to full display 默認(rèn)情況下是禁用的,但您可以通過(guò)設(shè)置啟用它:
? ? ? ? ? ? ? ? ? ? ? ? options.setEnableTimeToFullDisplayTracing(true);
? ? ? ? ? ? ? ? ? ? ? ? // 為用戶交互啟用自動(dòng)面包屑(點(diǎn)擊绊寻、滑動(dòng)花墩、滾動(dòng))
? ? ? ? ? ? ? ? ? ? ? ? options.setEnableUserInteractionTracing(true);
? ? ? ? ? ? ? ? ? ? ? ? // 發(fā)生錯(cuò)誤時(shí)截取應(yīng)用程序的屏幕截圖并將其作為附件包含在內(nèi)悬秉。在我們的屏幕截圖文檔中了解有關(guān)使用屏幕截圖豐富事件的更多信息。
? ? ? ? ? ? ? ? ? ? ? ? // https://docs.sentry.io/platforms/android/enriching-events/screenshots/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F
? ? ? ? ? ? ? ? ? ? ? ? options.setAttachScreenshot(true);
? ? ? ? ? ? ? ? ? ? ? ? // 發(fā)生錯(cuò)誤時(shí)呈現(xiàn)應(yīng)用程序整個(gè)視圖層次結(jié)構(gòu)的 JSON 表示并將其作為附件包含在內(nèi)冰蘑。在我們的視圖層次結(jié)構(gòu)文檔中了解有關(guān)使用視圖層次結(jié)構(gòu)豐富事件的更多信息和泌。
? ? ? ? ? ? ? ? ? ? ? ? // https://docs.sentry.io/platforms/android/enriching-events/viewhierarchy/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F
? ? ? ? ? ? ? ? ? ? ? ? options.setAttachViewHierarchy(true);
? ? ? ? ? ? ? ? ? ? ? ? // ANR 的監(jiān)控開關(guān)
? ? ? ? ? ? ? ? ? ? ? ? options.setAnrEnabled(true);
? ? ? ? ? ? ? ? ? ? ? ? // 配置錯(cuò)誤事件的采樣率,范圍為0.0到1.0祠肥。默認(rèn)值是1.0表示發(fā)送 100% 的錯(cuò)誤事件武氓。如果設(shè)置為0.1只有 10% 的錯(cuò)誤事件將被發(fā)送。事件是隨機(jī)選擇的仇箱。
? ? ? ? ? ? ? ? ? ? ? ? // https://docs.sentry.io/platforms/android/configuration/sampling/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F
? ? ? ? ? ? ? ? ? ? ? ? // 可以根據(jù)不同業(yè)務(wù)需求來(lái)調(diào)整采樣率,比如在語(yǔ)音房頁(yè)面采樣率為1.0.在修改用戶資料頁(yè)面采樣率為0.1
? ? ? ? ? ? ? ? ? ? ? ? options.setSampleRate(1.0);
? ? ? ? ? ? ? ? ? ? ? ? // 在開始交易時(shí)啟用分析县恕,在生產(chǎn)環(huán)境中調(diào)整
? ? ? ? ? ? ? ? ? ? ? ? options.setProfilesSampleRate(1.0);
? ? ? ? ? ? ? ? ? ? ? ? // 一個(gè)介于 0 和 1 之間的數(shù)字,控制將給定交易發(fā)送到 Sentry 的百分比機(jī)會(huì)剂桥。(0 代表 0%忠烛,而 1 代表 100%。)同樣適用于應(yīng)用程序中創(chuàng)建的所有交易权逗。tracesSampler必須定義這個(gè)或才能啟用 追蹤記錄請(qǐng)求期間發(fā)生的事件的過(guò)程美尸,通常跨多個(gè)服務(wù)斟薇。.
? ? ? ? ? ? ? ? ? ? ? ? options.setTracesSampleRate(1.0);
? ? ? ? ? ? ? ? ? ? ? ? // 指定在報(bào)告 ANR 之前線程應(yīng)該被阻塞多長(zhǎng)時(shí)間
? ? ? ? ? ? ? ? ? ? ? ? options.setAnrTimeoutIntervalMillis(3000);
? ? ? ? ? ? ? ? ? ? ? ? //會(huì)話
? ? ? ? ? ? ? ? ? ? ? ? //會(huì)話表示用戶和應(yīng)用程序之間的交互师坎。會(huì)話包含一個(gè)時(shí)間戳、一個(gè)狀態(tài)(會(huì)話是否正晨氨酰或崩潰)屹耐,并且始終與發(fā)布相關(guān)聯(lián)。大多數(shù)哨兵 SDK 可以自動(dòng)管理會(huì)話椿猎。
? ? ? ? ? ? ? ? ? ? ? ? //要從健康數(shù)據(jù)中獲益,您必須至少使用 2.1.0 版本的 Android SDK寿弱,并在 SDK 的初始化選項(xiàng)中啟用發(fā)布健康指標(biāo)的收集犯眠。默認(rèn)情況下,在我們的 Android 3.0 及更高版本中會(huì)捕獲發(fā)布運(yùn)行狀況症革,除非您在 SDK 的初始化選項(xiàng)中特別禁用收集它筐咧。
? ? ? ? ? ? ? ? ? ? ? ? //默認(rèn)情況下,一旦應(yīng)用程序在后臺(tái)運(yùn)行超過(guò) 30 秒噪矛,會(huì)話就會(huì)終止量蕊。您可以使用名為 的選項(xiàng)更改超時(shí)sessionTrackingIntervalMillis。它需要以毫秒為單位的數(shù)量艇挨。例如残炮,將其配置為 60 秒:
? ? ? ? ? ? ? ? ? ? ? ? options.setSessionTrackingIntervalMillis(60000);
? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置為 時(shí)true,SDK 將向 Sentry 發(fā)送會(huì)話事件缩滨。所有瀏覽器 SDK 都支持這一點(diǎn)势就,每次頁(yè)面加載和頁(yè)面導(dǎo)航到 Sentry 都會(huì)發(fā)出一個(gè)會(huì)話泉瞻。在移動(dòng) SDK 中,當(dāng)應(yīng)用進(jìn)入后臺(tái)超過(guò) 30 秒時(shí)苞冯,會(huì)話將結(jié)束袖牙。
? ? ? ? ? ? ? ? ? ? ? ? options.setEnableAutoSessionTracking(true);
? ? ? ? ? ? ? ? ? ? ? ? // 打開或關(guān)閉調(diào)試模式。如果啟用調(diào)試舅锄,如果發(fā)送事件出現(xiàn)問(wèn)題鞭达,SDK 將嘗試打印出有用的調(diào)試信息。默認(rèn)值為始終false皇忿。通常不建議在生產(chǎn)中打開它畴蹭,盡管打開debug模式不會(huì)引起任何安全問(wèn)題。
? ? ? ? ? ? ? ? ? ? ? ? options.setDebug(DebugLog.logIsOpen);
? ? ? ? ? ? ? ? ? ? ? ? // 啟用debug模式使 SDK 生成盡可能多的診斷數(shù)據(jù)禁添。但是撮胧,如果您希望降低 Sentry SDK 診斷日志的詳細(xì)程度,請(qǐng)配置此選項(xiàng)以設(shè)置適當(dāng)?shù)募?jí)別:
? ? ? ? ? ? ? ? ? ? ? ? //
? ? ? ? ? ? ? ? ? ? ? ? //debug: default最詳細(xì)的模式
? ? ? ? ? ? ? ? ? ? ? ? //info:信息性消息
? ? ? ? ? ? ? ? ? ? ? ? //warning: 警告某些事情可能不對(duì)
? ? ? ? ? ? ? ? ? ? ? ? //error: 只打印SDK內(nèi)部錯(cuò)誤
? ? ? ? ? ? ? ? ? ? ? ? //fatal: 只打印嚴(yán)重錯(cuò)誤
? ? ? ? ? ? ? ? ? ? ? ? options.setDiagnosticLevel(SentryLevel.DEBUG);
? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置環(huán)境老翘。此字符串是自由格式的芹啥,默認(rèn)情況下未設(shè)置。一個(gè)版本可以與多個(gè)環(huán)境相關(guān)聯(lián)铺峭,以在 UI 中將它們分開(想想stagingvsprod或類似的)墓怀。
? ? ? ? ? ? ? ? ? ? ? ? options.setEnvironment(Constant.getAppEnvEnum().getBuildTypePrefix());
? ? ? ? ? ? ? ? ? ? ? ? // https://docs.sentry.io/product/security/mobile-privacy/?original_referrer=https%3A%2F%2Fhelp.sentry.io%2F
//? ? ? ? ? ? ? ? ? ? ? ? 如果啟用此標(biāo)志,則活動(dòng)集成會(huì)添加某些個(gè)人身份信息 (PII)卫键。默認(rèn)情況下傀履,不發(fā)送此類數(shù)據(jù)。
//? ? ? ? ? ? ? ? ? ? ? ? 如果您在移動(dòng)應(yīng)用程序中使用 Sentry莉炉,請(qǐng)閱讀我們關(guān)于移動(dòng)數(shù)據(jù)隱私的常見問(wèn)題解答钓账,以幫助了解 Apple App Store 和 Google Play 應(yīng)用程序隱私詳細(xì)信息。
//? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)選項(xiàng)是off默認(rèn)的絮宁。如果您啟用此選項(xiàng)梆暮,請(qǐng)務(wù)必使用我們的敏感數(shù)據(jù)管理功能手動(dòng)刪除您不想發(fā)送的內(nèi)容。https://docs.sentry.io/platforms/android/data-management/sensitive-data/
? ? ? ? ? ? ? ? ? ? ? ? options.setSendDefaultPii(true);
? ? ? ? ? ? ? ? ? ? ? ? // Activity 的檢測(cè)一旦啟用绍昂,就會(huì)為每次啟動(dòng)的 Activity 捕獲事務(wù)啦粹。SDK將Transaction名稱設(shè)置為Activity的名稱,例如 窘游,MainActivity將Transaction操作設(shè)置為ui.load唠椭。
? ? ? ? ? ? ? ? ? ? ? ? //事務(wù)在onCreate調(diào)用每個(gè) Activity 的方法之前開始。
? ? ? ? ? ? ? ? ? ? ? ? //默認(rèn)情況下啟用 Activity 的檢測(cè)忍饰,
? ? ? ? ? ? ? ? ? ? ? ? // 事務(wù)在每個(gè) Activity 的onResume方法執(zhí)行后完成贪嫂。 交易自動(dòng)完成,但您可以通過(guò)設(shè)置禁用它
? ? ? ? ? ? ? ? ? ? ? ? options.setEnableActivityLifecycleTracingAutoFinish(true);
? ? ? ? ? ? ? ? ? ? ? ? // 開啟ActivityLifecycle Tracing
? ? ? ? ? ? ? ? ? ? ? ? options.setEnableAutoActivityLifecycleTracing(true);
? ? ? ? ? ? ? ? ? ? ? ? // 開啟ActivityLifecycle面包屑
? ? ? ? ? ? ? ? ? ? ? ? options.setEnableActivityLifecycleBreadcrumbs(true);
? ? ? ? ? ? ? ? ? ? ? ? //
? ? ? ? ? ? ? ? ? ? ? ? options.addIntegration(new FragmentLifecycleIntegration(ApplicationSingleton.getInstance.getApplication(), true, true));
? ? ? ? ? ? ? ? ? ? ? ? // 此函數(shù)使用特定于 SDK 的消息或錯(cuò)誤事件對(duì)象調(diào)用喘批,并可以返回修改后的事件對(duì)象撩荣,或null跳過(guò)報(bào)告事件铣揉。例如,這可用于在發(fā)送前手動(dòng)剝離 PII餐曹。
? ? ? ? ? ? ? ? ? ? ? ? options.setBeforeSend(new SentryOptions.BeforeSendCallback() {
@Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? public @Nullable SentryEventexecute(@NotNull SentryEvent event, @NotNull Hint hint) {
// 這個(gè)方法是在主線程中執(zhí)行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return event;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
});
? ? ? ? ? ? ? ? ? ? ? ? // 該函數(shù)使用 SDK 特定的交易事件對(duì)象調(diào)用逛拱,可以返回修改后的交易事件對(duì)象,或者null跳過(guò)事件上報(bào)台猴。一種可能使用的方法是在發(fā)送之前手動(dòng)剝離 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 的面包屑對(duì)象調(diào)用此函數(shù)饱狂。當(dāng)函數(shù)沒(méi)有返回任何內(nèi)容時(shí)曹步,面包屑將被刪除。要傳遞面包屑休讳,請(qǐng)返回第一個(gè)參數(shù)讲婚,其中包含面包屑對(duì)象】∪幔回調(diào)通常會(huì)獲得第二個(gè)參數(shù)(稱為“提示”)筹麸,其中包含創(chuàng)建面包屑的原始對(duì)象,以進(jìn)一步自定義面包屑的外觀雏婶。
? ? ? ? ? ? ? ? ? ? ? ? options.setBeforeBreadcrumb(new SentryOptions.BeforeBreadcrumbCallback() {
@Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? public @Nullable Breadcrumbexecute(@org.jetbrains.annotations.NotNull Breadcrumb breadcrumb, @org.jetbrains.annotations.NotNull Hint hint) {
return breadcrumb;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
});
? ? ? ? ? ? ? ? ? ? ? ? // 自定義上下文允許您將任意數(shù)據(jù)附加到事件物赶。通常,此上下文在其生命周期中捕獲的任何問(wèn)題之間共享留晚。您無(wú)法搜索這些酵紫,但可以在問(wèn)題頁(yè)面上查看它們:附加自定義數(shù)據(jù)的最佳做法是通過(guò)結(jié)構(gòu)化上下文。上下文必須始終是字典或映射错维,其值可以是任意的奖地。然后,使用setContext并給上下文一個(gè)唯一的名稱:
? ? ? ? ? ? ? ? ? ? ? ? Sentry.configureScope(new ScopeCallback() {
@Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? public void run(@org.jetbrains.annotations.NotNull Scope scope) {
}
});
? ? ? ? ? ? ? ? ? ? }
});
設(shè)置用戶信息
User user =new User();
user.setId(“”);
user.setName(“”);
Sentry.setUser(user);
設(shè)置Tag
Sentry.setTag(key, value);
配置網(wǎng)絡(luò)攔截器
OkHttpClient.Builder builder =new OkHttpClient().newBuilder().pingInterval(5, TimeUnit.SECONDS).connectTimeout(30, TimeUnit.SECONDS)// 鏈接服務(wù)器超時(shí)時(shí)間.addInterceptor(new SentryOkHttpInterceptor());// 寫入超時(shí)時(shí)間