Go整合Sentry
阿新 • • 發佈:2018-12-16
Raven-Go為Go程式語言提供了Sentry客戶端實現。
Raven-Go可以像任何其他Go庫一樣通過go get安裝:
$ go get github.com/getsentry/raven-go
一、配置客戶端
要使用raven-go,您需要匯入烏鴉包,然後在全球範圍內初始化您的DSN。如果指定SENTRY_DSN環境變數,則會自動為您完成此操作。還可以分別在環境變數SENTRY_RELEASE和SENTRY_ENVIRONMENT中指定釋出和環境。
package main import "github.com/getsentry/raven-go" func init() { raven.SetDSN("https://<key>:<secret>@sentry.io/<project>") }
二、上報錯誤
在Go中,有錯誤和恐慌,Raven可以同時處理這兩個錯誤。要了解有關差異的更多資訊,請閱讀錯誤處理和Go。 要處理正常的錯誤響應,我們有兩個選項:CaptureErrorAndWait和CaptureError。前者是一個阻塞呼叫,對於您希望在報告後退出應用程式的情況,後者是非阻塞的。
三、上報Panics
捕捉Panics也很簡單。我們只需要將程式碼包裝在CapturePanic中。 CapturePanic將執行func,如果發生Panics,我們將記錄它,然後優雅地繼續。
raven.CapturePanic(func() { // do all of the scary things here }, nil)
四、附加上下文
所有Capture *函式都接受另一個引數,用於傳遞標記對映作為第二個引數。例如:
raven.CaptureError(err, map[string]string{"browser": "Firefox"})
Sentry中的標籤有助於分類,併為您提供有關發生的錯誤的更多資訊。
五、事件取樣
要設定客戶端取樣,您可以使用SetSampleRate客戶端功能。預設情況下禁用錯誤取樣(sampleRate = 1)。
package main import "github.com/getsentry/raven-go" func init() { raven.SetSampleRate(0.25) }