mirror of
https://github.com/penpot/penpot.git
synced 2025-02-03 04:49:03 -05:00
🔥 Remove sentry from codebase
This commit is contained in:
parent
bc55268a17
commit
041ecf67fe
5 changed files with 0 additions and 242 deletions
|
@ -198,11 +198,6 @@
|
||||||
(s/def ::telemetry-with-taiga ::us/boolean)
|
(s/def ::telemetry-with-taiga ::us/boolean)
|
||||||
(s/def ::tenant ::us/string)
|
(s/def ::tenant ::us/string)
|
||||||
|
|
||||||
(s/def ::sentry-trace-sample-rate ::us/number)
|
|
||||||
(s/def ::sentry-attach-stack-trace ::us/boolean)
|
|
||||||
(s/def ::sentry-debug ::us/boolean)
|
|
||||||
(s/def ::sentry-dsn ::us/string)
|
|
||||||
|
|
||||||
(s/def ::config
|
(s/def ::config
|
||||||
(s/keys :opt-un [::secret-key
|
(s/keys :opt-un [::secret-key
|
||||||
::flags
|
::flags
|
||||||
|
@ -283,10 +278,6 @@
|
||||||
::semaphore-auth
|
::semaphore-auth
|
||||||
|
|
||||||
::rpc-rlimit-config
|
::rpc-rlimit-config
|
||||||
::sentry-dsn
|
|
||||||
::sentry-debug
|
|
||||||
::sentry-attach-stack-trace
|
|
||||||
::sentry-trace-sample-rate
|
|
||||||
::smtp-default-from
|
::smtp-default-from
|
||||||
::smtp-default-reply-to
|
::smtp-default-reply-to
|
||||||
::smtp-host
|
::smtp-host
|
||||||
|
|
|
@ -1,170 +0,0 @@
|
||||||
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
;;
|
|
||||||
;; Copyright (c) KALEIDOS INC
|
|
||||||
|
|
||||||
(ns app.loggers.sentry
|
|
||||||
"A mattermost integration for error reporting."
|
|
||||||
(:require
|
|
||||||
[app.common.logging :as l]
|
|
||||||
[app.common.uuid :as uuid]
|
|
||||||
[app.config :as cf]
|
|
||||||
[app.db :as db]
|
|
||||||
[app.util.async :as aa]
|
|
||||||
[app.worker :as wrk]
|
|
||||||
[clojure.core.async :as a]
|
|
||||||
[clojure.spec.alpha :as s]
|
|
||||||
[cuerdas.core :as str]
|
|
||||||
[integrant.core :as ig])
|
|
||||||
(:import
|
|
||||||
io.sentry.Scope
|
|
||||||
io.sentry.IHub
|
|
||||||
io.sentry.Hub
|
|
||||||
io.sentry.NoOpHub
|
|
||||||
io.sentry.protocol.User
|
|
||||||
io.sentry.SentryOptions
|
|
||||||
io.sentry.SentryLevel
|
|
||||||
io.sentry.ScopeCallback))
|
|
||||||
|
|
||||||
(defonce enabled (atom true))
|
|
||||||
|
|
||||||
(defn- parse-context
|
|
||||||
[event]
|
|
||||||
(reduce-kv
|
|
||||||
(fn [acc k v]
|
|
||||||
(cond
|
|
||||||
(= k :id) (assoc acc k (uuid/uuid v))
|
|
||||||
(= k :profile-id) (assoc acc k (uuid/uuid v))
|
|
||||||
(str/blank? v) acc
|
|
||||||
:else (assoc acc k v)))
|
|
||||||
{}
|
|
||||||
(:context event)))
|
|
||||||
|
|
||||||
(defn- parse-event
|
|
||||||
[event]
|
|
||||||
(assoc event :context (parse-context event)))
|
|
||||||
|
|
||||||
(defn- build-sentry-options
|
|
||||||
[cfg]
|
|
||||||
(let [version (:base cf/version)]
|
|
||||||
(doto (SentryOptions.)
|
|
||||||
(.setDebug (:debug cfg false))
|
|
||||||
(.setTracesSampleRate (:traces-sample-rate cfg 1.0))
|
|
||||||
(.setDsn (:dsn cfg))
|
|
||||||
(.setServerName (cf/get :host))
|
|
||||||
(.setEnvironment (cf/get :tenant))
|
|
||||||
(.setAttachServerName true)
|
|
||||||
(.setAttachStacktrace (:attach-stack-trace cfg false))
|
|
||||||
(.setRelease (str "backend@" (if (= version "0.0.0") "develop" version))))))
|
|
||||||
|
|
||||||
(defn handle-event
|
|
||||||
[^IHub shub event]
|
|
||||||
(letfn [(set-user! [^Scope scope {:keys [context] :as event}]
|
|
||||||
(let [user (User.)]
|
|
||||||
(.setIpAddress ^User user ^String (:ip-addr context))
|
|
||||||
(when-let [pid (:profile-id context)]
|
|
||||||
(.setId ^User user ^String (str pid)))
|
|
||||||
(.setUser scope ^User user)))
|
|
||||||
|
|
||||||
(set-level! [^Scope scope]
|
|
||||||
(.setLevel scope SentryLevel/ERROR))
|
|
||||||
|
|
||||||
(set-context! [^Scope scope {:keys [context] :as event}]
|
|
||||||
(let [uri (str (cf/get :public-uri) "/dbg/error-by-id/" (:id context))]
|
|
||||||
(.setContexts scope "detailed_error_uri" ^String uri))
|
|
||||||
(when-let [vers (:frontend-version event)]
|
|
||||||
(.setContexts scope "frontend_version" ^String vers))
|
|
||||||
(when-let [puri (:public-uri event)]
|
|
||||||
(.setContexts scope "public_uri" ^String (str puri)))
|
|
||||||
(when-let [uagent (:user-agent context)]
|
|
||||||
(.setContexts scope "user_agent" ^String uagent))
|
|
||||||
(when-let [tenant (:tenant event)]
|
|
||||||
(.setTag scope "tenant" ^String tenant))
|
|
||||||
(when-let [type (:error-type context)]
|
|
||||||
(.setTag scope "error_type" ^String (str type)))
|
|
||||||
(when-let [code (:error-code context)]
|
|
||||||
(.setTag scope "error_code" ^String (str code)))
|
|
||||||
)
|
|
||||||
|
|
||||||
(capture [^Scope scope {:keys [context error] :as event}]
|
|
||||||
(let [msg (str (:message error) "\n\n"
|
|
||||||
|
|
||||||
"======================================================\n"
|
|
||||||
"=================== Params ===========================\n"
|
|
||||||
"======================================================\n"
|
|
||||||
|
|
||||||
(:params context) "\n"
|
|
||||||
|
|
||||||
(when (:explain context)
|
|
||||||
(str "======================================================\n"
|
|
||||||
"=================== Explain ==========================\n"
|
|
||||||
"======================================================\n"
|
|
||||||
(:explain context) "\n"))
|
|
||||||
|
|
||||||
(when (:data context)
|
|
||||||
(str "======================================================\n"
|
|
||||||
"=================== Error Data =======================\n"
|
|
||||||
"======================================================\n"
|
|
||||||
(:data context) "\n"))
|
|
||||||
|
|
||||||
(str "======================================================\n"
|
|
||||||
"=================== Stack Trace ======================\n"
|
|
||||||
"======================================================\n"
|
|
||||||
(:trace error))
|
|
||||||
|
|
||||||
"\n")]
|
|
||||||
(set-user! scope event)
|
|
||||||
(set-level! scope)
|
|
||||||
(set-context! scope event)
|
|
||||||
(.captureMessage ^IHub shub msg)
|
|
||||||
))
|
|
||||||
]
|
|
||||||
(when @enabled
|
|
||||||
(.withScope ^IHub shub (reify ScopeCallback
|
|
||||||
(run [_ scope]
|
|
||||||
(->> event
|
|
||||||
(parse-event)
|
|
||||||
(capture scope))))))
|
|
||||||
|
|
||||||
))
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; Error Listener
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
(s/def ::receiver any?)
|
|
||||||
(s/def ::dsn ::cf/sentry-dsn)
|
|
||||||
(s/def ::trace-sample-rate ::cf/sentry-trace-sample-rate)
|
|
||||||
(s/def ::attach-stack-trace ::cf/sentry-attach-stack-trace)
|
|
||||||
(s/def ::debug ::cf/sentry-debug)
|
|
||||||
|
|
||||||
(defmethod ig/pre-init-spec ::reporter [_]
|
|
||||||
(s/keys :req-un [::wrk/executor ::db/pool ::receiver]
|
|
||||||
:opt-un [::dsn ::trace-sample-rate ::attach-stack-trace]))
|
|
||||||
|
|
||||||
(defmethod ig/init-key ::reporter
|
|
||||||
[_ {:keys [receiver dsn executor] :as cfg}]
|
|
||||||
(l/info :msg "initializing sentry reporter" :dsn dsn)
|
|
||||||
(let [opts (build-sentry-options cfg)
|
|
||||||
shub (if dsn
|
|
||||||
(Hub. ^SentryOptions opts)
|
|
||||||
(NoOpHub/getInstance))
|
|
||||||
output (a/chan (a/sliding-buffer 128)
|
|
||||||
(filter #(= (:level %) "error")))]
|
|
||||||
(receiver :sub output)
|
|
||||||
(a/go-loop []
|
|
||||||
(let [event (a/<! output)]
|
|
||||||
(if (nil? event)
|
|
||||||
(do
|
|
||||||
(l/info :msg "stoping error reporting loop")
|
|
||||||
(.close ^IHub shub))
|
|
||||||
(do
|
|
||||||
(a/<! (aa/with-thread executor (handle-event shub event)))
|
|
||||||
(recur)))))
|
|
||||||
output))
|
|
||||||
|
|
||||||
(defmethod ig/halt-key! ::reporter
|
|
||||||
[_ output]
|
|
||||||
(when output
|
|
||||||
(a/close! output)))
|
|
|
@ -88,7 +88,6 @@
|
||||||
(def worker-uri (obj/get global "penpotWorkerURI" "/js/worker.js"))
|
(def worker-uri (obj/get global "penpotWorkerURI" "/js/worker.js"))
|
||||||
(def translations (obj/get global "penpotTranslations"))
|
(def translations (obj/get global "penpotTranslations"))
|
||||||
(def themes (obj/get global "penpotThemes"))
|
(def themes (obj/get global "penpotThemes"))
|
||||||
(def sentry-dsn (obj/get global "penpotSentryDsn"))
|
|
||||||
(def onboarding-form-id (obj/get global "penpotOnboardingQuestionsFormId"))
|
(def onboarding-form-id (obj/get global "penpotOnboardingQuestionsFormId"))
|
||||||
|
|
||||||
(def build-date (parse-build-date global))
|
(def build-date (parse-build-date global))
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
[app.main.data.users :as du]
|
[app.main.data.users :as du]
|
||||||
[app.main.data.websocket :as ws]
|
[app.main.data.websocket :as ws]
|
||||||
[app.main.errors]
|
[app.main.errors]
|
||||||
[app.main.sentry :as sentry]
|
|
||||||
[app.main.store :as st]
|
[app.main.store :as st]
|
||||||
[app.main.ui :as ui]
|
[app.main.ui :as ui]
|
||||||
[app.main.ui.alert]
|
[app.main.ui.alert]
|
||||||
|
@ -75,7 +74,6 @@
|
||||||
(defn ^:export init
|
(defn ^:export init
|
||||||
[]
|
[]
|
||||||
(worker/init!)
|
(worker/init!)
|
||||||
(sentry/init!)
|
|
||||||
(i18n/init! cf/translations)
|
(i18n/init! cf/translations)
|
||||||
(theme/init! cf/themes)
|
(theme/init! cf/themes)
|
||||||
(init-ui)
|
(init-ui)
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
;;
|
|
||||||
;; Copyright (c) KALEIDOS INC
|
|
||||||
|
|
||||||
(ns app.main.sentry
|
|
||||||
"Sentry integration."
|
|
||||||
(:require
|
|
||||||
["@sentry/browser" :as sentry]
|
|
||||||
[app.common.exceptions :as ex]
|
|
||||||
[app.common.uuid :as uuid]
|
|
||||||
[app.config :as cf]
|
|
||||||
[app.main.refs :as refs]))
|
|
||||||
|
|
||||||
(defn- setup-profile!
|
|
||||||
[profile]
|
|
||||||
(if (or (= uuid/zero (:id profile))
|
|
||||||
(nil? profile))
|
|
||||||
(sentry/setUser nil)
|
|
||||||
(sentry/setUser #js {:id (str (:id profile))})))
|
|
||||||
|
|
||||||
(defn init!
|
|
||||||
[]
|
|
||||||
(setup-profile! @refs/profile)
|
|
||||||
(when cf/sentry-dsn
|
|
||||||
(sentry/init
|
|
||||||
#js {:dsn cf/sentry-dsn
|
|
||||||
:autoSessionTracking false
|
|
||||||
:attachStacktrace false
|
|
||||||
:release (str "frontend@" (:base @cf/version))
|
|
||||||
:maxBreadcrumbs 20
|
|
||||||
:beforeBreadcrumb (fn [breadcrumb _hint]
|
|
||||||
(let [category (.-category ^js breadcrumb)]
|
|
||||||
(if (= category "navigate")
|
|
||||||
breadcrumb
|
|
||||||
nil)))
|
|
||||||
:tracesSampleRate 1.0})
|
|
||||||
|
|
||||||
(add-watch refs/profile ::profile
|
|
||||||
(fn [_ _ _ profile]
|
|
||||||
(setup-profile! profile)))
|
|
||||||
|
|
||||||
(add-watch refs/route ::route
|
|
||||||
(fn [_ _ _ route]
|
|
||||||
(sentry/addBreadcrumb
|
|
||||||
#js {:category "navigate",
|
|
||||||
:message (str "path: " (:path route))
|
|
||||||
:level (.-Info ^js sentry/Severity)})))))
|
|
||||||
|
|
||||||
(defn capture-exception
|
|
||||||
[err]
|
|
||||||
(when cf/sentry-dsn
|
|
||||||
(when (ex/ex-info? err)
|
|
||||||
(sentry/setContext "ex-data", (clj->js (ex-data err))))
|
|
||||||
(sentry/captureException err))
|
|
||||||
err)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue