1. 程式人生 > >Java整合Sentry之配置(一)

Java整合Sentry之配置(一)

Sentry的庫和框架整合文件說明了如何為每個受支援的整合執行初始Sentry配置。通過整合設定Sentry後,以下配置可與任何整合結合使用。在嘗試進行任何高階配置之前,請檢查整合文件。

一、設定DSN

DSN是第一個也是最重要的配置,因為它告訴SDK在哪裡傳送事件。您可以在Sentry的“專案設定”的“客戶端金鑰”部分中找到專案的DSN。它可以以多種方式配置。配置方法的說明詳述如下。 在檔案系統或類路徑上的屬性檔案中(預設為sentry.properties):

dsn=https://public:[email protected]:port/1

通過Java系統屬性(在Android上不可用):

java -Dsentry.dsn=https://public:[email protected]:port/1 -jar app.jar

通過系統環境變數(在Android上不可用):

SENTRY_DSN=https://public:[email protected]:port/1 java -jar app.jar

在程式碼中:

import io.sentry.Sentry;

Sentry.init("https://public:[email protected]:port/1");

二、配置方法

配置Java SDK有多種方法,但所有方法都採用相同的選項。請參閱下文,瞭解如何使用每種配置方法以及選項名稱之間的差異。

1、通過屬性檔案配置

可以通過位於檔案系統或應用程式類路徑中的.properties檔案來配置Java SDK。預設情況下,SDK將在應用程式的當前工作目錄或類路徑的根目錄中查詢sentry.properties檔案。在大多數伺服器端應用程式中,向類路徑新增資源的預設目錄是src / main / resources /,而在Android上,預設目錄是app / src / main / resources /。您可以使用sentry.properties.file Java System屬性或SENTRY_PROPERTIES_FILE系統環境變數來覆蓋屬性檔案的位置。 由於此檔案通常與您的應用程式捆綁在一起,因此在打包應用程式後,無法輕鬆更改這些值。因此,屬性檔案對於設定您不希望經常更改的預設值或選項很有用。屬性檔案是為每個選項值檢查的最後一個位置,因此執行時配置(如下所述)將覆蓋它(如果可用)。 屬性檔案中的選項名稱與下面給出的示例完全匹配。例如,要在屬性檔案中啟用取樣:

sample.rate=0.75

2、通過執行時環境進行配置

這是配置Sentry客戶端最靈活的方法,因為它可以根據您執行應用程式的環境輕鬆更改。(請注意,Android應用程式無法使用Java系統屬性或系統環境變數。請通過Android配置Sentry for Android程式碼或屬性檔案。) 有兩種方法可用於執行時配置,按以下順序檢查:Java系統屬性和系統環境變數。 Java System Property選項名稱與下面給出的示例完全相同,只是它們以sentry為字首。例如,要啟用取樣:

java -Dsentry.sample.rate=0.75 -jar app.jar

系統環境變數選項名稱要求您替換。使用_,大寫它們,並新增SENTRY_字首。例如,要啟用取樣:

SENTRY_SAMPLE_RATE=0.75 java -jar app.jar

3、在程式碼中配置

DSN本身也可以直接在程式碼中配置:

import io.sentry.Sentry;

Sentry.init("https://public:[email protected]:port/1?option=value&other.option=othervalue");

 請注意,在執行此行之前,Sentry將無法對事件執行任何操作,因此,如果在啟動期間可能發生錯誤,則不建議使用此配置方法。此外,通過傳遞硬編碼的DSN,您無法再通過Java系統屬性或系統環境變數在執行時覆蓋DSN。

4、通過DSN配置

還可以通過在DSN本身上設定查詢字串引數來配置SDK。這有點遞迴,因為您的DSN本身是一個必須在某處設定的選項(而不是在DSN中!)。 DSN中的選項名稱與下面給出的示例完全匹配。例如,要在通過環境設定DSN時啟用取樣:

SENTRY_DSN=https://public:[email protected]:port/1?sample.rate=0.75 java -jar app.jar

 當然,您可以使用上述其他方法傳遞此DSN

三、選項

可以如上所述配置以下選項:通過sentry.properties檔案,通過Java系統屬性,通過系統環境變數或通過DSN。

1、Release

要設定將隨每個事件一起傳送的應用程式版本,請使用release選項:

release=1.0.0

2、Distribution

要設定將隨每個事件一起傳送的應用程式分發,請使用dist選項:

release=1.0.0
dist=x86

請注意,只有在設定了版本時,分發才有用(和使用)。

3、Environment

要設定將隨每個事件一起傳送的應用程式環境,請使用environment選項:

environment=staging

 4、Server Name

要設定將隨每個事件一起傳送的伺服器名稱,請使用servername選項:

servername=host1

5、Tags

要設定將隨每個事件一起傳送的標記,請使用帶有逗號分隔的鍵對和帶冒號連線的值的tags選項:

tags=tag1:value1,tag2:value2

6、MDC Tags

要設定從SLF4J MDC系統中提取的標記名稱,請使用帶逗號分隔的鍵名稱的mdctags選項。請注意,此選項僅在您使用其中一個日誌記錄整合時有用。

mdctags=foo,bar
import org.slf4j.MDC;

MDC.put("foo", "value1");
MDC.put("bar", "value2");

// This sends an event where the 'foo' and 'bar' MDC values are set as additional tags
logger.error("This is a test");

 7、額外設定

要設定將隨每個事件(但不作為標記)傳送的額外資料,請使用帶有逗號分隔的鍵對和冒號連線的值的額外選項:

extra=key1:value1,key2:value2

8、應用堆疊資訊

Sentry將與您的應用程式(“在應用程式”中)直接相關的堆疊幀與來自其他包(如標準庫,框架或其他依賴項)的堆疊幀區分開來。差異在Sentry Web介面中可見,預設情況下僅顯示“在應用程式中”框架。 您可以使用stacktrace.app.packages選項配置應用程式使用的包字首,該選項採用逗號分隔的列表。

stacktrace.app.packages=com.mycompany,com.other.name

 如果您不想使用此功能但想要禁用警告,只需將其設定為空字串:

stacktrace.app.packages=

9、相同堆疊資訊合併

有些幀被...更多行替換,因為它們與封閉異常中的幀相同。 預設情況下,Sentry中會啟用類似的行為。要禁用它,請使用stacktrace.hidecommon選項。

HighLevelException: MidLevelException: LowLevelException
        at Main.a(Main.java:13)
        at Main.main(Main.java:4)
Caused by: MidLevelException: LowLevelException
        at Main.c(Main.java:23)
        at Main.b(Main.java:17)
        at Main.a(Main.java:11)
        ... 1 more
Caused by: LowLevelException
        at Main.e(Main.java:30)
        at Main.d(Main.java:27)
        at Main.c(Main.java:21)
        ... 3 more

有些幀被...更多行替換,因為它們與封閉異常中的幀相同。 預設情況下,Sentry中會啟用類似的行為。要禁用它,請使用stacktrace.hidecommon選項。

stacktrace.hidecommon=false