Improve error reporting context

This commit is contained in:
Andrey Antukh 2023-08-02 14:51:12 +02:00
parent 00f7c94377
commit 046f501152
3 changed files with 31 additions and 27 deletions

View File

@ -10,6 +10,7 @@
[app.common.exceptions :as ex] [app.common.exceptions :as ex]
[app.common.logging :as l] [app.common.logging :as l]
[app.common.schema :as sm] [app.common.schema :as sm]
[app.config :as cf]
[app.http :as-alias http] [app.http :as-alias http]
[app.http.access-token :as-alias actoken] [app.http.access-token :as-alias actoken]
[app.http.session :as-alias session] [app.http.session :as-alias session]
@ -30,14 +31,14 @@
(let [claims (-> {} (let [claims (-> {}
(into (::session/token-claims request)) (into (::session/token-claims request))
(into (::actoken/token-claims request)))] (into (::actoken/token-claims request)))]
{:path (:path request) {:request/path (:path request)
:method (:method request) :request/method (:method request)
:params (:params request) :request/params (:params request)
:ip-addr (parse-client-ip request) :request/user-agent (yrq/get-header request "user-agent")
:user-agent (yrq/get-header request "user-agent") :request/ip-addr (parse-client-ip request)
:profile-id (:uid claims) :request/profile-id (:uid claims)
:version (or (yrq/get-header request "x-frontend-version") :version/frontend (or (yrq/get-header request "x-frontend-version") "unknown")
"unknown")})) :version/backend (:full cf/version)}))
(defmulti handle-exception (defmulti handle-exception
(fn [err & _rest] (fn [err & _rest]

View File

@ -40,23 +40,22 @@
[{:keys [::l/context ::l/message ::l/props ::l/logger ::l/level ::l/cause] :as record}] [{:keys [::l/context ::l/message ::l/props ::l/logger ::l/level ::l/cause] :as record}]
(us/assert! ::l/record record) (us/assert! ::l/record record)
(let [data (ex-data cause)] (let [data (ex-data cause)
context (-> context
(assoc :tenant (cf/get :tenant))
(assoc :host (cf/get :host))
(assoc :public-uri (cf/get :public-uri))
(assoc :logger/name logger)
(assoc :logger/level level)
(dissoc :request/params))]
(merge (merge
{:context (-> context {:context (-> (into (sorted-map) context)
(assoc :tenant (cf/get :tenant))
(assoc :host (cf/get :host))
(assoc :public-uri (cf/get :public-uri))
(assoc :version (:full cf/version))
(assoc :logger-name logger)
(assoc :logger-level level)
(dissoc :params)
(pp/pprint-str :width 200 :length 50 :level 10)) (pp/pprint-str :width 200 :length 50 :level 10))
:props (pp/pprint-str props :width 200 :length 50) :props (pp/pprint-str props :width 200 :length 50)
:hint (or (ex-message cause) @message) :hint (or (ex-message cause) @message)
:trace (ex/format-throwable cause :data? false :explain? false :header? false :summary? false)} :trace (ex/format-throwable cause :data? false :explain? false :header? false :summary? false)}
(when-let [params (:params context)] (when-let [params (:request/params context)]
{:params (pp/pprint-str params :width 200)}) {:params (pp/pprint-str params :width 200)})
(when-let [data (some-> data (dissoc ::s/problems ::s/value ::s/spec ::sm/explain :hint))] (when-let [data (some-> data (dissoc ::s/problems ::s/value ::s/spec ::sm/explain :hint))]

View File

@ -30,7 +30,9 @@
"```\n" "```\n"
"- host: `" (:host report) "`\n" "- host: `" (:host report) "`\n"
"- tenant: `" (:tenant report) "`\n" "- tenant: `" (:tenant report) "`\n"
"- version: `" (:version report) "`\n" "- request-path: `" (:request-path report) "`\n"
"- frontend-version: `" (:frontend-version report) "`\n"
"- backend-version: `" (:backend-version report) "`\n"
"\n" "\n"
"Trace:\n" "Trace:\n"
(:trace report) (:trace report)
@ -50,13 +52,15 @@
(defn record->report (defn record->report
[{:keys [::l/context ::l/id ::l/cause] :as record}] [{:keys [::l/context ::l/id ::l/cause] :as record}]
(us/assert! ::l/record record) (us/assert! ::l/record record)
{:id id {:id id
:tenant (cf/get :tenant) :tenant (cf/get :tenant)
:host (cf/get :host) :host (cf/get :host)
:public-uri (cf/get :public-uri) :public-uri (cf/get :public-uri)
:version (:full cf/version) :backend-version (or (:version/backend context) (:full cf/version))
:profile-id (:profile-id context) :frontend-version (:version/frontend context)
:trace (ex/format-throwable cause :detail? false :header? false)}) :profile-id (:request/profile-id context)
:request-path (:request/path context)
:trace (ex/format-throwable cause :detail? false :header? false)})
(defn handle-event (defn handle-event
[cfg record] [cfg record]