Sentry是一个运用监控系统,可以用于前后端各种技术栈的线上监控和错误剖析,这次我们用它来停止Spring Boot项目的线上日志剖析实际。
创立项目首先需求依据提示在Sentry中创立好项目,项目平台(platform)可以选择Spring Boot或许Java。
引入依赖&配置Sentry提供了官方的Spring Boot Starter。
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-spring-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
除此之外,我们还需求配置application.properties,将我们在Sentry中创立的项目密钥(DSN)导入:
sentry.dsn=https://key@host/id
第一个错误编写我们的Controller,尝试抛出一个复杂的异常。
@RestController
public class HelloController {
@RequestMapping("/")
public void test() {
throw new IllegalArgumentException("hello world");
}
}
假设之前的配置没有成绩,那么我们就可以在Sentry的「Issue」面板下面看到这个异常信息。
点击这个异常即可查看详细信息。可以看到这个异常的一些基本信息,比如说「用户信息(这里未设置)」、「用户环境」、「标签(Tag)」、「调用栈跟踪(StackTrace)」、「日志片(Breadcrumbs)」、「央求Headers」,以及一些用户可以自定义的内容(叫做Context)。
这里要引见一下Sentry中的一个概念,首先,在相反中央产生的异常会被归结为一个「Issue」,每次在这个中央产生的异常叫做「Event」。所以在同一个中央触发两次异常,依然只要一个Issue,但是可以在Event页面看到两个事情。
自定义用户信息既然曾经知道了这个异常,我们也是希望了解是哪位用户触发的异常。Sentry SDK提供了SentryUserProvider,可以用于异常时用户信息的提供,我们只需求配置一个Bean。
@Bean
public SentryUserProvider sentryUserProvider(){
return () -> {
// 实践的用户信息,能够要经过其他方式取得
User user = new User();
user.setId("userId");
user.setUsername("张三");
user.setEmail("zhangsan@gmail.com");
return user;
};
}
再次触发异常,我们失掉了用户信息。
自定义Tag以便应用Tag挑选异常随着异常信息的增多,我们希望可以挑选出一些特定的异常信息,Sentry提供了「标签(Tag)」功用,可以依据标签停止挑选。虽然自带的Tags曾经够多,但是我们还是希望可以依据业务需求自定义一些,当然Sentry SDK提供了BeforeSendCallback,我们可以借此添加一些Tag。
@Bean
public SentryOptions.BeforeSendCallback beforeSendCallback(){
return (event, hint) -> {
event.setTag("name","zhangsan");
return event;
};
}
可以看到我们的Tag曾经成功地添加了,点击这个Tag可以找到一切含有这个Tag的Event。
(责任编辑:admin)