汪建军的博客

休迅飞凫,飘忽若神,凌波微步,罗袜生尘。

Android developer, sometimes thinking, sometimes try it.


Spring Boot(三)接入sentry

Sentry是一个实时事件日志记录平台,可以帮助我们记录事件,记录exception,可以看做后端的umeng统计。这里是Java版的文档。网上能找到的sentry教程基本上都是基于raven-java的,但是官网已经明确说了raven-java已过时,要使用sentry-java。本文基于当前最新的1.2.0版本,sentry-java的形式。

还是上一篇的项目

1、在gradle里添加:

    compile 'io.sentry:sentry:1.2.0'
    compile 'io.sentry:sentry-logback:1.2.0'

2、在DemoApplication里添加

@SpringBootApplication
public class DemoApplication{

    private static SentryClient sentry;

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        initSentryWithInstance();
    }

    private static void initSentryWithInstance() {
        Context context = getSentry().getContext();
        context.recordBreadcrumb(new BreadcrumbBuilder().setMessage("启动后台服务 - "
                + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())).build());
        context.setUser(new UserBuilder()
                .setUsername("user")
                .setEmail("abc@sentry.com")
                .build());
    }

    public static SentryClient getSentry() {
        if (sentry == null) {
            sentry = SentryClientFactory.sentryClient(MConstants.SENTRY_DSN);
        }
        return sentry;
    }

}

说明:

  • sentry有Static与Instance两种初始化形式,选择一种即可。
  • 我这里使用的是Instance形式,使用Static初始化:Sentry.init(dsn);
  • 使用Static的形式初始化sentry,调用Sentry.capture(e);无法在管理后台看到报错定位。
  • 这里的dsn(Data Source Name)用于区分不同的应用不同的身份,一般格式为{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID},你需要运维给你开通一个账号并向他索取这个值,除了在代码里配置dsn还可以在resouces目录下(与application.properties同级)新建一个sentry.properties,在里面添加dsn=...
  • 这里配置了email,以后有报错会发邮件给你...

3、在统一错误处理类GlobalExceptionHandler的ExceptionHandler方法里添加

DemoApplication.getSentry().sendException(e);  

这样报错都会在sentry后台看到了,可以定位到行号,类似这样


最后关于logback,官网有详细的文档,这里补充两点经验

1、只有Logger.error才能在sentry后台看到,其他的只能在控制台看到,信息都挺详细的。
2、logback.xml也是放在resouces目录下(与application.properties同级)。

最近的文章

给RecyclerView添加水印

目标: 给RecyclerView添加重复文字水印,水印随RecyclerView的滑动而RecyclerView,效果如下图: 我哥们通过RecyclerView.ItemDecoration的方式…

举个例子继续阅读
更早的文章

Spring Boot(二)配置、单元测试、打包

配置 配置文件为application.properties,这个在我之前的博客有写过,这里补充几点: 1、添加spring.profiles.active=dev字段,在任意类里可以通过如下注解取出…

后端继续阅读
comments powered by Disqus