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