【问题标题】:Where to get the Sentry/Raven DSN from at runtime?在运行时从哪里获取 Sentry/Raven DSN?
【发布时间】:2017-01-25 05:18:41
【问题描述】:

Sentry.io requires a Data source name (DSN) for it's clients to upload exceptions。从文档中我不清楚

  • 这个 DSN 应该保存在哪里,即在应用程序的开源代码中(这似乎不是一个好主意,因为私钥的意义何在)或者是否应该从报告错误并在 sentry.io 注册(这意味着它不是真正自动的,但 sentry.io 也没有定义)
  • 此字符串的范围,即它是绑定到项目还是用户,如果后者是维护项目的 sentry.io 用户或使用包含 sentry.io 的软件的任何用户的情况客户端并在 sentry.io 注册。这几乎是一个单独的问题,一旦我必须为 DSN 编程用户输入(如果它是用户特定的),它就会变得相关。

为什么通用文档使用 Javascript,即它仅用于 Javascript 还是仅作为示例? In the practical example Raven DSN 来自 main 方法的参数。现实中什么时候会出现这种情况?

【问题讨论】:

    标签: java sentry


    【解决方案1】:

    对糟糕的文档感到抱歉。实际上,我现在正在努力对它们进行全面检修。

    您是正确的,不首选硬编码 DSN 或从程序参数中手动检索它。设置 DSN(和其他配置)的首选方法是通过进程环境变量或 Java 系统属性。请参阅此处的示例:https://github.com/getsentry/raven-java/blob/08c45e38a859e222b56d21570d00ad6a1411ebdd/raven-logback/README.md

    这样,Raven 客户端代码可以包含在项目中(即使在开源项目中),但 DSN 的配置发生在运行时,但是管理员更喜欢设置他们的环境(或者根本不配置,如果他们愿意的话使 Sentry 处于禁用状态)。

    关于另一个问题:DSN 与特定的 Sentry 项目相关联,因此无论哪个最终用户遇到问题,都会汇总该项目中发生的所有异常。

    【讨论】:

    • 太好了,谢谢。因此,如果我想提供一个 FLOSS 应用程序,该应用程序旨在在我作为开发人员和用户之间没有管理员的情况下使用,我别无选择,只能在某个时候在源存储库中公开 DSN,因为启动脚本指定环境变量或属性无论如何都会包含它,对吧?
    • 是的,如果您希望其他人运行您的应用程序但希望接收错误报告,那么您需要在您的存储库中包含 DSN。 DSN 所做的只是允许用户将事件发送到您的 Sentry 项目——因此您对其保密并不完全重要。有人可以使用 DSN 发送虚假事件,但他们无法使用它登录您的帐户并查看任何内容。
    猜你喜欢
    • 2015-12-07
    • 2016-05-11
    • 2018-08-14
    • 2015-05-12
    • 2018-07-22
    • 2017-03-13
    • 2019-07-16
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多