Java集成Sentry之配置(一)

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

猜你喜欢

转载自blog.csdn.net/u013702678/article/details/83214204