Java Sentry未在spring引导应用程序中自动捕获异常
我想使用sentry跟踪spring boot应用程序的异常。Sentry不会自动捕获异常。但是当我使用Java Sentry未在spring引导应用程序中自动捕获异常,java,spring,spring-boot,logging,sentry,Java,Spring,Spring Boot,Logging,Sentry,我想使用sentry跟踪spring boot应用程序的异常。Sentry不会自动捕获异常。但是当我使用Sentry.capture(e)在抓块中,然后是哨兵 是捕获错误。下面是配置和一些代码片段。提前谢谢你的帮助 @SpringBootApplication @EnableAutoConfiguration public class MyApplication implements CommandLineRunner { private static final Logger logger
Sentry.capture(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);
}
}
}
POM.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>
我发现了问题:MyApplication
正在实现CommandLineRunner
。我用sentry-spring
替代了sentry-logback
选项,并更新了logback.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>
错误
%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n
您还需要指定sentry dsn
属性。我发现了问题:MyApplication
正在实现CommandLineRunner
。我用sentry-spring
替代了sentry-logback
选项,并更新了logback.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>
错误
%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n
您还需要指定sentry dsn
属性。因此需要手动执行sentry.init()?出于soem原因,我假设sentry本身会为我做这件事……所以有必要手动执行sentry.init()
?出于某种原因,我以为哨兵会为我做这件事。。。
<!-- 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>