sentry根本不起作用

vlurs2pr  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(440)

我们有一个spring1.5.17应用程序,并试图简单地集成sentry。因为这是一个旧版本的spring(没有升级是不可能的),所以我们遵循sentry的 Legacy SDK 1.7 这里有方向。这很简单。

配置

这是波姆。我们也使用了其他spring库,比如logging/actuator/jpa,但为了清晰起见没有显示。都是相同的 Spring 版本。

<dependency>
    <groupId>io.sentry</groupId>
    <artifactId>sentry-spring</artifactId>
    <version>1.7.30</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.17.RELEASE</version>
</dependency>

此外,增加 sentry.properties 文件位于 src/main/resources .

enabled=true
dsn=***
environment=uat
sample.rate=1.0
stacktrace.app.packages=com.pls
stacktrace.hidecommon=false

应用

根据sentry文档创建了一个样板配置文件,覆盖两个bean。

@Configuration
public class SentryConfig {

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

    @Bean
    public ServletContextInitializer sentryServletContextInitializer() {
        return new io.sentry.spring.SentryServletContextInitializer();
    }
}

通过断点,我已经确认这些bean正在初始化,并且它们正在从中获取属性 sentry.properties 正确地。一个相关的线程,我发现如果我手动 SentryClient.captureEvent(event) 电话,然后事件出现在哨兵。这意味着sentry客户机设置正确并且工作正常,但是spring实际上从未调用过 .captureEvent() .
为了证实我的怀疑,我进入了sentryexceptionresolver bean,并确认代码从未命中这个断点。

我试图通过在 @RestController 例如。

@GET
@Path("/test")
public Object throwError(){
  LOGGER.error("ERROR BEING LOGGED");
  throw new RuntimeException("ERROR THROWN");
}

虽然这个错误肯定会在控制台日志中抛出,但它不会触发 .capture() 代码路径。

日志记录?

相关的线程提到了一些与日志模块有关的内容,但我不明白这有什么关系。 sentry-spring 依赖关系正在加载所有的应用程序需要和客户端正在初始化,只是从来没有真正调用!!
不管怎样,我尝试添加各种日志依赖项(如这个sentry文档中描述的logback)都没有用。我的配置可能缺少什么!?!?
如果有关系的话,我们使用SpringBootStarter日志。。。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

注意,当我添加 sentry-logback 依赖关系,应用程序不加载。

erhoui1w

erhoui1w1#

看起来您使用的是jax-rs而不是springmvc。没有现成的jax rs-sentry集成。
要将异常转发给sentry,还可以使用 sentry-logback 整合。您可以配置logback将任何记录器错误转发给sentry。没有spring集成的缺点是错误没有用http请求的上下文信息修饰。

相关问题