从哪里获得Sentry / Raven DSN在运行时?

时间:2017-01-25 05:18:41

标签: java sentry

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方法的参数。实际情况何时会成为现实?

1 个答案:

答案 0 :(得分:1)

对于糟糕的文档感到抱歉。实际上,我正在努力彻底检修它们。

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

这样,Raven客户端代码可以包含在项目中(即使在开源项目中),但DSN的配置在运行时发生,但管理员更喜欢设置他们的环境(或者根本不配置,如果他们想要的话离开Sentry残疾人士。)

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