mirror of
https://github.com/penpot/penpot.git
synced 2025-02-03 21:09:00 -05:00
✨ Minor improvements on error reporting
This commit is contained in:
parent
73117f6f27
commit
6bd2dcff2a
4 changed files with 23 additions and 14 deletions
|
@ -162,7 +162,8 @@
|
||||||
(let [context (dissoc report
|
(let [context (dissoc report
|
||||||
:trace :cause :params :data :spec-problems
|
:trace :cause :params :data :spec-problems
|
||||||
:spec-explain :spec-value :error :explain :hint)
|
:spec-explain :spec-value :error :explain :hint)
|
||||||
params {:context (with-out-str (fpp/pprint context {:width 300}))
|
params {:context (with-out-str
|
||||||
|
(fpp/pprint context {:width 200}))
|
||||||
:hint (:hint report)
|
:hint (:hint report)
|
||||||
:spec-explain (:spec-explain report)
|
:spec-explain (:spec-explain report)
|
||||||
:spec-problems (:spec-problems report)
|
:spec-problems (:spec-problems report)
|
||||||
|
|
|
@ -27,21 +27,12 @@
|
||||||
(merge
|
(merge
|
||||||
{:path (:uri request)
|
{:path (:uri request)
|
||||||
:method (:request-method request)
|
:method (:request-method request)
|
||||||
:hint (ex-message error)
|
|
||||||
:params (:params request)
|
:params (:params request)
|
||||||
|
|
||||||
:spec-problems (some->> data ::s/problems (take 10) seq vec)
|
|
||||||
:spec-value (some->> data ::s/value)
|
|
||||||
:data (some-> data (dissoc ::s/problems ::s/value ::s/spec))
|
|
||||||
:ip-addr (parse-client-ip request)
|
:ip-addr (parse-client-ip request)
|
||||||
:profile-id (:profile-id request)}
|
:profile-id (:profile-id request)}
|
||||||
|
|
||||||
(let [headers (:headers request)]
|
(let [headers (:headers request)]
|
||||||
{:user-agent (get headers "user-agent")
|
{:user-agent (get headers "user-agent")
|
||||||
:frontend-version (get headers "x-frontend-version" "unknown")})
|
:frontend-version (get headers "x-frontend-version" "unknown")}))))
|
||||||
|
|
||||||
(when (and data (::s/problems data))
|
|
||||||
{:spec-explain (us/pretty-explain data)}))))
|
|
||||||
|
|
||||||
(defmulti handle-exception
|
(defmulti handle-exception
|
||||||
(fn [err & _rest]
|
(fn [err & _rest]
|
||||||
|
|
|
@ -23,11 +23,12 @@
|
||||||
::cause]))
|
::cause]))
|
||||||
|
|
||||||
(defn error
|
(defn error
|
||||||
[& {:keys [hint cause ::data] :as params}]
|
[& {:keys [hint cause ::data type] :as params}]
|
||||||
(s/assert ::error-params params)
|
(s/assert ::error-params params)
|
||||||
(let [payload (-> params
|
(let [payload (-> params
|
||||||
(dissoc :cause ::data)
|
(dissoc :cause ::data)
|
||||||
(merge data))]
|
(merge data))
|
||||||
|
hint (or hint (pr-str type))]
|
||||||
(ex-info hint payload cause)))
|
(ex-info hint payload cause)))
|
||||||
|
|
||||||
(defmacro raise
|
(defmacro raise
|
||||||
|
|
|
@ -8,8 +8,10 @@
|
||||||
(:require
|
(:require
|
||||||
[app.common.exceptions :as ex]
|
[app.common.exceptions :as ex]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
|
[app.common.spec :as us]
|
||||||
[clojure.pprint :refer [pprint]]
|
[clojure.pprint :refer [pprint]]
|
||||||
[cuerdas.core :as str]
|
[cuerdas.core :as str]
|
||||||
|
[clojure.spec.alpha :as s]
|
||||||
[fipp.edn :as fpp]
|
[fipp.edn :as fpp]
|
||||||
#?(:clj [io.aviso.exception :as ie])
|
#?(:clj [io.aviso.exception :as ie])
|
||||||
#?(:cljs [goog.log :as glog]))
|
#?(:cljs [goog.log :as glog]))
|
||||||
|
@ -152,6 +154,18 @@
|
||||||
[logger level]
|
[logger level]
|
||||||
(.isEnabled ^Logger logger ^Level level)))
|
(.isEnabled ^Logger logger ^Level level)))
|
||||||
|
|
||||||
|
#?(:clj
|
||||||
|
(defn get-error-context
|
||||||
|
[error]
|
||||||
|
(when-let [data (ex-data error)]
|
||||||
|
(merge
|
||||||
|
{:hint (ex-message error)
|
||||||
|
:spec-problems (some->> data ::s/problems (take 10) seq vec)
|
||||||
|
:spec-value (some->> data ::s/value)
|
||||||
|
:data (some-> data (dissoc ::s/problems ::s/value ::s/spec))}
|
||||||
|
(when (and data (::s/problems data))
|
||||||
|
{:spec-explain (us/pretty-explain data)})))))
|
||||||
|
|
||||||
(defmacro log
|
(defmacro log
|
||||||
[& {:keys [level cause ::logger ::async ::raw ::context] :or {async true} :as props}]
|
[& {:keys [level cause ::logger ::async ::raw ::context] :or {async true} :as props}]
|
||||||
(if (:ns &env) ; CLJS
|
(if (:ns &env) ; CLJS
|
||||||
|
@ -169,7 +183,9 @@
|
||||||
~(if async
|
~(if async
|
||||||
`(send-off logging-agent
|
`(send-off logging-agent
|
||||||
(fn [_#]
|
(fn [_#]
|
||||||
(with-context (into {:id (uuid/next)} ~context)
|
(with-context (merge {:id (uuid/next)}
|
||||||
|
(get-error-context ~cause)
|
||||||
|
~context)
|
||||||
(->> (or ~raw (build-map-message ~props))
|
(->> (or ~raw (build-map-message ~props))
|
||||||
(write-log! ~logger-sym ~level-sym ~cause)))))
|
(write-log! ~logger-sym ~level-sym ~cause)))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue