From ddc60292cd469cf6778a036e7cffabe760918b5a Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Tue, 22 Mar 2022 12:56:39 +0100 Subject: [PATCH] [#349] [3rd-party] Pass ex-data on to Sentry as additional data field (@DerGuteMoritz) --- .../timbre/appenders/3rd_party/sentry.clj | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/taoensso/timbre/appenders/3rd_party/sentry.clj b/src/taoensso/timbre/appenders/3rd_party/sentry.clj index 043ebbcd..44e024ba 100644 --- a/src/taoensso/timbre/appenders/3rd_party/sentry.clj +++ b/src/taoensso/timbre/appenders/3rd_party/sentry.clj @@ -22,6 +22,10 @@ Requires the DSN (e.g. \"https://:@sentry.io/\") to be passed in, see Sentry documentation for details. + Timbre's `*context*` will be passed to Sentry as `:extra` data. When logging + an exception with ex-data attached, it will be stringified and added under + `:ex-data` key (unless that key already exists in context). + Common options: * :tags, :environment, :release, and :modules will be passed to Sentry as attributes, Ref. https://docs.sentry.io/clientdev/attributes/. @@ -44,6 +48,13 @@ (fn [data] (let [{:keys [instant level output_ ?err msg_ ?ns-str context]} data + ?ex-data (ex-data ?err) + extra + (cond-> context + (and ?ex-data (not (contains? context :ex-data))) + (assoc :ex-data + (enc/substr (str ?ex-data) 0 4096))) + event (as-> base-event event (merge event @@ -51,7 +62,7 @@ :logger ?ns-str :level (get timbre->sentry-levels level)} - (when context {:extra context})) + (when extra {:extra extra})) (if ?err (interfaces/stacktrace event ?err) @@ -68,3 +79,7 @@ ;; Create an example appender with default opts, but override `:min-level`: (merge (sentry-appender "https://:@sentry.io/") {:min-level :debug})) + + +(cond-> + )