项目新需求,需要对接sentry平台,于是在完成客户端相关配置之后,将一些知识点总结一下。
配置流程
- 根据开发环境,引入相应的SDK包,这里我用的是java,可以直接引入与java开发相关的包,这里我只实践了三种方式(maven引入):
a. java原生的方式
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry</artifactId>
<version>1.7.27</version>
</dependency>
b.同logback结合
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-logback</artifactId>
<version>1.7.27</version>
</dependency>
c.同spring结合
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-spring</artifactId>
<version>1.7.27</version>
</dependency>
其实这后两种方式的实质还是使用了java原生方式,其核心在于Sentry.capture这种静态方法的使用。
- 配置常用的sentry属性
a. dsn,Data Source Name,相当于一个发送请求的链接,注意,这个是必填项
b. environment,上传到sentry服务器时对应的环境,这个是客户端自定义的
c. stacktrace.app.packages,需要追踪异常的包的前缀
d. release,客户端自定义的应用版本信息
一般来说,sentry在使用默认构造器时,加载属性的方式顺序如下:
a. JNDI, if available
b. Java System Properties
c. System Environment Variables
d. DSN options, if a non-null DSN is provided
d. Sentry properties file found in resources
我这里用的是sentry.properties。
- 在应用中配置使用sentry的入口
这里按照三种方式来进行对比总结。
- java原生方式
可以在要记录的异常处,调用Sentry.capture方法
- 同logback结合
在logback.xml配置文件中,配置一个类型为io.sentry.logback.SentryAppender
的<appender>,配置好过滤条件即可,在有需要的logger中配置该appender。
- 同spring结合
这里仅介绍使用java配置的形式:
@Bean
public HandlerExceptionResolver sentryExceptionResolver() {
return new io.sentry.spring.SentryExceptionResolver();
}
该形式只适用于使用SpringMVC的web项目,这个sentryExceptionResolver相当
于创建了一个优先级最高的全局异常解析器,将捕捉到的异常信息发送到sentry服务端。
SentryExceptionResolver本质还是调用了Sentry.capture方法,因而我们可以
根据自己的需求自定义SentryExceptionResolver。