2017-01-25 32 views
0

Sentry.io requires a Data source name (DSN) for it's clients to upload exceptions。目前還不清楚我從文檔在運行時從哪裏獲取Sentry/Raven DSN?

  • 其中該DSN應該保持,即應用程序的開源代碼中(不似乎是個好主意,因爲什麼是私鑰點即可)或是否應該向報告錯誤並在sentry.io註冊的用戶查詢(這意味着它不是真正的自動,但sentry.io也沒有定義這兩者)
  • 這個字符串的範圍有多少,即是否綁定到項目或用戶,以及後者是維護項目的sentry.io用戶還是使用包含sentry.io客戶端並在sentry.io註冊的軟件的任何用戶。這幾乎是一個單獨的問題,只要我必須爲DSN編程用戶輸入(如果它是用戶特定的),它就會變得相關。

爲什麼通用文檔使用Javascript,即僅用於Javascript還是它是一個示例? RavenDSN來自main方法的論點。這究竟是什麼時候會成爲現實?

回答

1

很抱歉關於較差的文檔。實際上,我正在努力徹底改變他們。

你是正確的,硬編碼的DSN或從程序參數手動檢索它不是首選。設置DSN(和其他配置)的首選方法是通過進程環境變量或Java系統屬性。看到這裏的例子:https://github.com/getsentry/raven-java/blob/08c45e38a859e222b56d21570d00ad6a1411ebdd/raven-logback/README.md

這樣,Raven客戶端代碼可以包含在項目中(即使在開源項目中),但DSN的配置發生在運行時,但管理員更喜歡設置他們的環境(或不完全配置,如果他們想讓Sentry禁用)。

關於另一個問題:DSN與特定的Sentry項目綁定,以便無論哪個最終用戶遇到問題,該項目中發生的所有異常都會被聚合。

+0

太好了,謝謝。因此,如果我想提供一個FLOSS應用程序,該應用程序旨在作爲開發者和用戶之間沒有管理員的情況下使用,我別無選擇,但因爲啓動腳本指定的環境在某些時刻暴露了源存儲庫中的DSN變量或屬性會包含它,對吧? –

+0

是的,如果您希望其他人運行您的應用程序,但是您希望收到錯誤報告,那麼您需要將DSN包含在您的回購站中。所有DSN都允許用戶將事件發送到您的Sentry項目 - 因此將其保密並非至關重要。有人可以使用DSN發送虛假事件,但他們無法使用它登錄到您的帳戶並查看任何內容。 – Brett