From 046f501152161d6426c367ada2de8dda15503210 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 2 Aug 2023 14:51:12 +0200 Subject: [PATCH] :sparkles: Improve error reporting context --- backend/src/app/http/errors.clj | 17 +++++++++-------- backend/src/app/loggers/database.clj | 21 ++++++++++----------- backend/src/app/loggers/mattermost.clj | 20 ++++++++++++-------- 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/backend/src/app/http/errors.clj b/backend/src/app/http/errors.clj index 3829abfaa7..24f9891d35 100644 --- a/backend/src/app/http/errors.clj +++ b/backend/src/app/http/errors.clj @@ -10,6 +10,7 @@ [app.common.exceptions :as ex] [app.common.logging :as l] [app.common.schema :as sm] + [app.config :as cf] [app.http :as-alias http] [app.http.access-token :as-alias actoken] [app.http.session :as-alias session] @@ -30,14 +31,14 @@ (let [claims (-> {} (into (::session/token-claims request)) (into (::actoken/token-claims request)))] - {:path (:path request) - :method (:method request) - :params (:params request) - :ip-addr (parse-client-ip request) - :user-agent (yrq/get-header request "user-agent") - :profile-id (:uid claims) - :version (or (yrq/get-header request "x-frontend-version") - "unknown")})) + {:request/path (:path request) + :request/method (:method request) + :request/params (:params request) + :request/user-agent (yrq/get-header request "user-agent") + :request/ip-addr (parse-client-ip request) + :request/profile-id (:uid claims) + :version/frontend (or (yrq/get-header request "x-frontend-version") "unknown") + :version/backend (:full cf/version)})) (defmulti handle-exception (fn [err & _rest] diff --git a/backend/src/app/loggers/database.clj b/backend/src/app/loggers/database.clj index e3021a6c77..a295783740 100644 --- a/backend/src/app/loggers/database.clj +++ b/backend/src/app/loggers/database.clj @@ -40,23 +40,22 @@ [{:keys [::l/context ::l/message ::l/props ::l/logger ::l/level ::l/cause] :as 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 - {:context (-> 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) + {:context (-> (into (sorted-map) context) (pp/pprint-str :width 200 :length 50 :level 10)) - :props (pp/pprint-str props :width 200 :length 50) :hint (or (ex-message cause) @message) :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)}) (when-let [data (some-> data (dissoc ::s/problems ::s/value ::s/spec ::sm/explain :hint))] diff --git a/backend/src/app/loggers/mattermost.clj b/backend/src/app/loggers/mattermost.clj index 93db476a79..8a2117e23c 100644 --- a/backend/src/app/loggers/mattermost.clj +++ b/backend/src/app/loggers/mattermost.clj @@ -30,7 +30,9 @@ "```\n" "- host: `" (:host 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" "Trace:\n" (:trace report) @@ -50,13 +52,15 @@ (defn record->report [{:keys [::l/context ::l/id ::l/cause] :as record}] (us/assert! ::l/record record) - {:id id - :tenant (cf/get :tenant) - :host (cf/get :host) - :public-uri (cf/get :public-uri) - :version (:full cf/version) - :profile-id (:profile-id context) - :trace (ex/format-throwable cause :detail? false :header? false)}) + {:id id + :tenant (cf/get :tenant) + :host (cf/get :host) + :public-uri (cf/get :public-uri) + :backend-version (or (:version/backend context) (:full cf/version)) + :frontend-version (:version/frontend context) + :profile-id (:request/profile-id context) + :request-path (:request/path context) + :trace (ex/format-throwable cause :detail? false :header? false)}) (defn handle-event [cfg record]