Flutter - Sentry 如何在调试模式下发送事件并停止发送

Flutter - Sentry how to send event and stop sending in debug mode

提问人:Rock 提问时间:11/1/2021 更新时间:2/28/2022 访问量:2595

问:

如何在哨兵中发送特定信息?文档中有事件,但如何正确使用它们以及确切地在哪里使用它们(例如:发送带有错误的用户电子邮件)?

Sentry 提供了这个源代码,但我到底在哪里使用它?:

 Sentry.configureScope(
      (scope) => scope.user = SentryUser(id: '1234', email: '[email protected]'),
    );

以及如何停止在调试模式下发送报告?

Flutter Sentry 错误报告

评论


答:

1赞 Manoel Neto 11/2/2021 #1

@Rock用户设置取决于你自己的业务逻辑,唯一重要的是在初始化 SDK 调用,而不是这样,任何地方都可以。Sentry.configureScope(...)

对于不在调试模式下发送事件,有很多方法可以做到这一点,您可以在调试模式下不初始化 SDK,或者您可以在调试模式下过滤事件 https://docs.sentry.io/platforms/flutter/configuration/filtering/

评论

0赞 Rock 11/3/2021
嗨,@Manoel感谢您的回复,我在初始化 sentry 后将 Sentry.configureScope(...) 放在主目录中,但不幸的是它不起作用。在哨兵面板中,它仍然显示用户未知
0赞 Rock 11/3/2021
我注意到我正在尝试在用户初始化之前发送用户数据,所以我在用户初始化之后放置了这个方法,它起作用了。多谢
14赞 Loren.A 11/15/2021 #2

只是为了添加一种简单的方法来禁用将来任何人的报告:debugMode

如果空字符串不在 in 或 ,则将空字符串传递给 in。dsnSentryFlutter.initReleaseProfile

kDebugMode常量在导入时可用Foundation

  await SentryFlutter.init(
    (options) {
      options.dsn = kDebugMode ? '' : sentryUrl;
    },
    appRunner: () => runApp(MyApp()),
  );

评论

7赞 Kyle Venn 3/29/2022
当我这样做时,异常不再打印到控制台。您可以添加以取回它们。options.debug = kDebugMode;
0赞 petras J 8/26/2022
最简单、最优雅的解决方案
2赞 Isuru 2/28/2022 #3

我只是在应用程序处于发布模式时才初始化 Sentry。

if (kReleaseMode) {
  // Only enable Sentry in release builds.
  await SentryFlutter.init(
    (options) {
      options.dsn = 'https://<your DSN>';
    },
    appRunner: () => runApp(const MyApp()),
  );
} else {
  runApp(const MyApp());
}