当前位置: 首页 > 知识库问答 >
问题:

Sentry未在Spring Boot应用程序中自动捕获异常

景正文
2023-03-14

我想使用sentry跟踪spring boot应用程序的异常。Sentry不会自动捕获异常。但是当我使用哨兵时。捕获(e) 在捕获块中,然后哨兵捕获错误。下面是配置和一些代码片段。提前谢谢你的帮助

@SpringBootApplication
@EnableAutoConfiguration
public class MyApplication implements CommandLineRunner {

private static final Logger logger = LoggerFactory.getLogger(MyApplication.class);

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

@Override
public void run(String... args) throws IOException {
  try {
          int example = 1 / 0;
      } catch (Exception e) {
          //Sentry.capture(e);
          logger.error("Caught exception erwqerer!", e);
      }
   }
}
@Configuration
public class SentryConfig {

    @Bean
    public HandlerExceptionResolver sentryExceptionResolver() {
        return new io.sentry.spring.SentryExceptionResolver();
    }
    
    @Bean
    public ServletContextInitializer sentryServletContextInitializer() {
        return new io.sentry.spring.SentryServletContextInitializer();
    }
    
    @Value("${com.zzzz.sentry.dsn:#{null}}")
    private String sentryDsn;

    @PostConstruct
    private void initializeSentry() {
        if (sentryDsn != null) {
            Sentry.init(sentryDsn);
        }
    }

}

波姆。xml

...
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>
...
        <dependency>
            <groupId>io.sentry</groupId>
            <artifactId>sentry-spring</artifactId>
            <version>1.7.5</version>
        </dependency>

应用性质

com.zzzz.sentry.dsn=https://akey@sentry.zzzz.com/20?environment=dev&stacktrace.app.packages=com.zzzz.mypackage

共有1个答案

夹谷星河
2023-03-14

我发现了问题:MyApplication正在实现CommandLineRunner。我使用了sentry-logback替代并更新了logback,而不是sentry-spring。xml如下所示:

    <!-- Configure the Sentry appender, overriding the logging threshold to the WARN level -->
    <appender name="Sentry" class="io.sentry.logback.SentryAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
<!-- LOG everything at INFO level -->
    <root level="WARN">
        <appender-ref ref="Console" />
        <appender-ref ref="Sentry" />
    </root>

您还需要指定哨兵dsn属性。

 类似资料:
  • 问题内容: 我正在与一个应用程序一起工作,该应用程序从XML Schema生成表单(使用JAXFront库),并将用户填写的数据存储到XML文档中。 我在需要时放置了try-catch-finally块,但是在主线程结束时(AWT线程仍在运行)捕获异常时我有一个小问题。 我有两个班级负责主要工作,其他班级对这个问题并不重要: 主类 :具有以下结构。初始化应用程序并运行主机 } 框架类 :生成视图和

  • 问题内容: 发生异常时,如何重新启动我的应用程序? 问题答案: 您可以将进程作为另一个进程的分支来运行,因此如果它死了,则可以对其进行分支。您将为此使用本机集群模块: 此代码生成一个工作进程,如果在工作进程中引发错误,它将关闭,并且退出将重新生成另一个工作进程。

  • 我在运行python flask web应用程序时得到了这个回溯(最近一次调用是最后一次)。 从烧瓶导入烧瓶app=烧瓶(名称) @app.route ("/") def你好():返回" 我正在终端上运行服务器:“cd Flask\u Blog”,“export Flask\u DEBUG=1” 我也尝试初始化烧瓶模块分配"flask.init()"代码,但我仍然得到错误的网页浏览器! 我做错什么

  • 我的用它的作用域启动coroutine 我的只处理一些逻辑,在本例中是某种验证器 然后我的只处理网络层/本地层 以下是我得到的错误日志: 错误直接指向显式的语句。

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?

  • 问题内容: 我有一个很奇怪的问题。我正在Eclipse中研究Java SWING应用程序。我在代码中的某个地方设置了一个断点,然后运行调试。我执行包含断点的代码,但总是被跳过。一旦我运行了引发未捕获异常的代码,断点就会再次被击中,而无需进行其他任何更改。引发异常的代码与包含断点的代码无关。 我试图在多个地方设置断点,但是直到抛出异常,它们才被击中。我仅对这一特定应用程序有此问题。我的调试器可以在其