Sentry的库和框架集成文档说明了如何为每个受支持的集成执行初始Sentry配置。通过集成设置Sentry后,以下配置可与任何集成结合使用。在尝试进行任何高级配置之前,请检查集成文档。
一、设置DSN
DSN是第一个也是最重要的配置,因为它告诉SDK在哪里发送事件。您可以在Sentry的“项目设置”的“客户端密钥”部分中找到项目的DSN。它可以以多种方式配置。配置方法的说明详述如下。
在文件系统或类路径上的属性文件中(默认为sentry.properties):
dsn=https://public:private@host:port/1
通过Java系统属性(在Android上不可用):
java -Dsentry.dsn=https://public:private@host:port/1 -jar app.jar
通过系统环境变量(在Android上不可用):
SENTRY_DSN=https://public:private@host:port/1 java -jar app.jar
在代码中:
import io.sentry.Sentry;
Sentry.init("https://public:private@host: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:private@host:port/1?option=value&other.option=othervalue");
请注意,在运行此行之前,Sentry将无法对事件执行任何操作,因此,如果在启动期间可能发生错误,则不建议使用此配置方法。此外,通过传递硬编码的DSN,您无法再通过Java系统属性或系统环境变量在运行时覆盖DSN。
4、通过DSN配置
还可以通过在DSN本身上设置查询字符串参数来配置SDK。这有点递归,因为您的DSN本身是一个必须在某处设置的选项(而不是在DSN中!)。
DSN中的选项名称与下面给出的示例完全匹配。例如,要在通过环境设置DSN时启用采样:
SENTRY_DSN=https://public:private@host: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