【问题标题】:How to set the user object to Sentry in Spring Boot?如何在 Spring Boot 中将用户对象设置为 Sentry?
【发布时间】:2020-09-29 14:08:12
【问题描述】:

在 Spring Boot 项目中,我有一个 SentryConfig.java 文件

    package example.services.bo.config;

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.HandlerExceptionResolver;

    @Configuration
    public class SentryConfig {
        @Bean
        public HandlerExceptionResolver sentryExceptionResolver() {
            return new io.sentry.spring.SentryExceptionResolver();
        }
    }

还有一个sentry.properties 文件:

dsn=http://123a98a06c844a85b34cdf0de1fcd114:abcc286fa2a846dcbc8334b3625bc7ac@sentry.example.com:9000/3
stacktrace.app.packages=example.services.bo

我将如何配置我的 Spring 项目以向 Sentry 发送用户详细信息,例如用户名和用户 ID?

编辑:

    @Configuration
    public class SentryConfig {
        @Bean
        public HandlerExceptionResolver sentryExceptionResolver() {
            Sentry.getContext().setUser(
                    new UserBuilder().setEmail("test@example.com").build()
            );
            return new io.sentry.spring.SentryExceptionResolver();
        }
    }

没有帮助。

【问题讨论】:

  • usernameuser id 是否属于 servlet 请求?
  • 您必须在请求周期期间将用户设置在当前上下文中,而不是在 bean 初始化期间。试试看。

标签: java spring spring-boot sentry


【解决方案1】:

您可以使用 Sentry 提供的静态方法在当前上下文中设置用户,如 usage example 所示:

        Sentry.getContext().setUser(
            new UserBuilder().setEmail("hello@sentry.io").build()
        );

一旦发生事件,这也将作为附加信息发送给 Sentry。

【讨论】:

  • 你如何确保同一个用户在请求中被改变?
【解决方案2】:

假设您需要进行 API 调用的客户端的用户名或用户 ID。例如对于 Android 用户名可能是已经登录的人。如果是这种情况,那么您需要使用 MDC 来推送这些详细信息。您需要在 Servlet 过滤器或拦截器级别初始化 MDC,使用其中之一由您决定。最好使用拦截器,因为您可以选择清除 MDC 上下文。

有关任何其他详细信息,您可以使用sentry.properties 文件。阅读更多关于https://docs.sentry.io/clients/java/config/ 要使 MDC 上下文正常工作,您需要设置 mdctags,在 mdctags 中您可以添加所需的所有 mdc 标签集。例如,您需要userNameuserId 然后将其添加为

mdctags=userName,userId

【讨论】:

    猜你喜欢
    • 2016-10-03
    • 2020-09-17
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2014-11-01
    • 2012-01-01
    相关资源
    最近更新 更多