如何在使用 Sentry 时仍然打印 Java 堆栈跟踪到控制台

How to still print Java Stack trace to console when using Sentry

我正在使用 Sentry 记录我正在构建的应用程序中的 Java 异常。

Sentry 非常适合解决生产问题,但当我只是在开发中乱搞时,我希望仍然能够将堆栈跟踪输出到控制台。

然而,一旦 Sentry.init(...) 已经 运行 异常似乎被抑制并且仅在哨兵网站上可用。

我应该在 Sentry.init(...) 中设置什么选项才能继续使用控制台堆栈跟踪进行开发?

我找到了两种处理方法。两者都可以在 Sentry.init 中配置。如果分享我的 Kotlin 片段,我希望没问题,在 Java 中应该不会有太大差异。

如果您可以不将未捕获的异常发送到 Sentry,您可以禁用 UncaughtExceptionHandler:

if (environment == "DEVELOPMENT") {
  options.enableUncaughtExceptionHandler = false
}

否则,如果您仍想在 Sentry 中保留该异常,您可以先使用 setBeforeSend 将其打印到控制台:

options.setBeforeSend { event, hint ->
  if (environment == "LOCAL") {
    System.err.println(event.throwable?.printStackTrace())
  }
  return@setBeforeSend event
}