diff --git a/main/project.clj b/main/project.clj index 2eab113..ff36412 100644 --- a/main/project.clj +++ b/main/project.clj @@ -10,8 +10,7 @@ :scm {:name "git" :url "https://github.com/taoensso/telemere"} :dependencies - [[com.taoensso/truss "2.0.0-SNAPSHOT"] - [com.taoensso/encore "3.132.0"]] + [[com.taoensso/encore "3.135.0-SNAPSHOT"]] :test-paths ["test" #_"src"] diff --git a/main/resources/signal-docstrings/signal-options.txt b/main/resources/signal-docstrings/signal-options.txt index 8364c66..816585a 100644 --- a/main/resources/signal-docstrings/signal-options.txt +++ b/main/resources/signal-docstrings/signal-options.txt @@ -18,10 +18,12 @@ All options are available for all signal creators: `:parent` ------ Custom ?{:keys [id uid]} to override auto (dynamic) parent signal tracing info `:root` -------- Custom ?{:keys [id uid]} to override auto (dynamic) root signal tracing info -`:location` ---- Custom ?{:keys [ns line column file]} to override auto signal creator callsite location `:ctx` --------- Custom ?val to override auto (dynamic `*ctx*`) in signal, as per `with-ctx` `:ctx+` -------- Custom ?val to update auto (dynamic `*ctx*`) in signal, as per `with-ctx+` +`:ns` ---------- Custom ?str namespace to override auto signal creator callsite +`:coords` ------ Custom ?[line column] to override auto signal creator callsite + `:elidable?` --- Should signal be subject to compile-time elision? (Default: true) `:sample-rate` - ?rate ∈ℝ[0,1] for signal sampling (0.75 => allow 75% of signals, nil => allow all) `:when` -------- Arb ?form; when present, form must return truthy to allow signal diff --git a/main/src/taoensso/telemere.cljc b/main/src/taoensso/telemere.cljc index 1397244..c0d46ee 100644 --- a/main/src/taoensso/telemere.cljc +++ b/main/src/taoensso/telemere.cljc @@ -31,15 +31,15 @@ (remove-ns (symbol (str *ns*))) (:api (enc/interns-overview))) -(enc/assert-min-encore-version [3 132 0]) +(enc/assert-min-encore-version [3 135 0]) ;;;; Shared signal API (sigs/def-api {:sf-arity 4 - :ct-sig-filter impl/ct-sig-filter - :*rt-sig-filter* impl/*rt-sig-filter* - :*sig-handlers* impl/*sig-handlers* + :ct-call-filter impl/ct-call-filter + :*rt-call-filter* impl/*rt-call-filter* + :*sig-handlers* impl/*sig-handlers* :lib-dispatch-opts (assoc sigs/default-handler-dispatch-opts :convey-bindings? false ; Handled manually @@ -209,8 +209,8 @@ ;; - uncaught->error! - ?id => nil #?(:clj - (defn- merge-or-assoc-opts [m &form &env k v] - (let [m (assoc m :location* (enc/get-source &form &env))] + (defn- merge-or-assoc-opts [m macro-form k v] + (let [m (assoc m :coords (truss/callsite-coords macro-form))] (if (map? v) (merge m v) (assoc m k v))))) @@ -221,8 +221,8 @@ "id + ?level => allowed? Note unique arg order: [x opts] rather than [opts x]!" {:doc (impl/signal-docstring :event!) :arglists (impl/signal-arglists :event!)} - ([ opts-or-id] `(impl/signal! ~(merge-or-assoc-opts base-opts &form &env :id opts-or-id))) - ([id opts-or-level] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form &env :level opts-or-level) :id id)))))) + ([ opts-or-id] `(impl/signal! ~(merge-or-assoc-opts base-opts &form :id opts-or-id))) + ([id opts-or-level] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form :level opts-or-level) :id id)))))) (comment (with-signal (event! ::my-id :info))) @@ -232,8 +232,8 @@ "?level + msg => allowed?" {:doc (impl/signal-docstring :log!) :arglists (impl/signal-arglists :log!)} - ([opts-or-msg ] `(impl/signal! ~(merge-or-assoc-opts base-opts &form &env :msg opts-or-msg))) - ([opts-or-level msg] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form &env :level opts-or-level) :msg msg)))))) + ([opts-or-msg ] `(impl/signal! ~(merge-or-assoc-opts base-opts &form :msg opts-or-msg))) + ([opts-or-level msg] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form :level opts-or-level) :msg msg)))))) (comment (with-signal (log! :info "My msg"))) @@ -243,8 +243,8 @@ "?id + run => unconditional run result (value or throw)." {:doc (impl/signal-docstring :trace!) :arglists (impl/signal-arglists :trace!)} - ([opts-or-run] `(impl/signal! ~(merge-or-assoc-opts base-opts &form &env :run opts-or-run))) - ([opts-or-id run] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form &env :id opts-or-id) :run run)))))) + ([opts-or-run] `(impl/signal! ~(merge-or-assoc-opts base-opts &form :run opts-or-run))) + ([opts-or-id run] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form :id opts-or-id) :run run)))))) (comment (with-signal (trace! ::my-id (+ 1 2)))) @@ -254,8 +254,8 @@ "?level + run => unconditional run result (value or throw)." {:doc (impl/signal-docstring :spy!) :arglists (impl/signal-arglists :spy!)} - ([opts-or-run] `(impl/signal! ~(merge-or-assoc-opts base-opts &form &env :run opts-or-run))) - ([opts-or-level run] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form &env :level opts-or-level) :run run)))))) + ([opts-or-run] `(impl/signal! ~(merge-or-assoc-opts base-opts &form :run opts-or-run))) + ([opts-or-level run] `(impl/signal! ~(assoc (merge-or-assoc-opts base-opts &form :level opts-or-level) :run run)))))) (comment (with-signals (spy! :info (+ 1 2)))) @@ -265,9 +265,9 @@ "?id + error => unconditional given error." {:doc (impl/signal-docstring :error!) :arglists (impl/signal-arglists :error!)} - ([opts-or-id error] `(error! ~(assoc (merge-or-assoc-opts base-opts &form &env :id opts-or-id) :error error))) + ([opts-or-id error] `(error! ~(assoc (merge-or-assoc-opts base-opts &form :id opts-or-id) :error error))) ([opts-or-error] - (let [opts (merge-or-assoc-opts base-opts &form &env :error opts-or-error) + (let [opts (merge-or-assoc-opts base-opts &form :error opts-or-error) gs-error (gensym "error")] `(let [~gs-error ~(get opts :error)] (impl/signal! ~(assoc opts :error gs-error)) @@ -281,9 +281,9 @@ "?id + run => unconditional run value or ?catch-val." {:doc (impl/signal-docstring :catch->error!) :arglists (impl/signal-arglists :catch->error!)} - ([opts-or-id run] `(catch->error! ~(assoc (merge-or-assoc-opts base-opts &form &env :id opts-or-id) :run run))) + ([opts-or-id run] `(catch->error! ~(assoc (merge-or-assoc-opts base-opts &form :id opts-or-id) :run run))) ([opts-or-run] - (let [opts (merge-or-assoc-opts base-opts &form &env :run opts-or-run) + (let [opts (merge-or-assoc-opts base-opts &form :run opts-or-run) rethrow? (not (contains? opts :catch-val)) catch-val (get opts :catch-val) run-form (get opts :run) @@ -325,7 +325,7 @@ {:arglists (impl/signal-arglists :uncaught->error!)} ([ ] (enc/keep-callsite `(uncaught->error! {}))) ([opts-or-id] - (let [opts (merge-or-assoc-opts base-opts &form &env :id opts-or-id)] + (let [opts (merge-or-assoc-opts base-opts &form :id opts-or-id)] `(uncaught->handler! (fn [~'__thread-arg ~'__throwable-arg] (impl/signal! ~opts)))))))) @@ -381,23 +381,23 @@ (enc/set-var-root! sigs/*default-handler-error-fn* (fn [{:keys [error] :as m}] (impl/signal! - {:kind :error - :level :error - :error error - :location {:ns "taoensso.encore.signals"} - :id :taoensso.encore.signals/handler-error - :msg "Error executing wrapped handler fn" - :data (dissoc m :error)}))) + {:kind :error + :level :error + :error error + :ns "taoensso.encore.signals" + :id :taoensso.encore.signals/handler-error + :msg "Error executing wrapped handler fn" + :data (dissoc m :error)}))) (enc/set-var-root! sigs/*default-handler-backp-fn* (fn [data] (impl/signal! - {:kind :event - :level :warn - :location {:ns "taoensso.encore.signals"} - :id :taoensso.encore.signals/handler-back-pressure - :msg "Back pressure on wrapped handler fn" - :data data}))) + {:kind :event + :level :warn + :ns "taoensso.encore.signals" + :id :taoensso.encore.signals/handler-back-pressure + :msg "Back pressure on wrapped handler fn" + :data data}))) (add-handler! :default/console (handler:console)) diff --git a/main/src/taoensso/telemere/impl.cljc b/main/src/taoensso/telemere/impl.cljc index 1a32289..539a31c 100644 --- a/main/src/taoensso/telemere/impl.cljc +++ b/main/src/taoensso/telemere/impl.cljc @@ -52,9 +52,9 @@ id-filter (enc/get-env {:as :edn} :taoensso.telemere/ct-id-filter<.platform><.edn>) min-level (enc/get-env {:as :edn} :taoensso.telemere/ct-min-level<.platform><.edn>)] - (enc/defonce ct-sig-filter - "`SigFilter` used for compile-time elision, or nil." - (sigs/sig-filter + (enc/defonce ct-call-filter + "`SpecFilter` used for compile-time elision, or nil." + (sigs/spec-filter {:kind-filter (or kind-filter (get base :kind-filter)) :ns-filter (or ns-filter (get base :ns-filter)) :id-filter (or id-filter (get base :id-filter)) @@ -66,9 +66,9 @@ id-filter (enc/get-env {:as :edn} :taoensso.telemere/rt-id-filter<.platform><.edn>) min-level (enc/get-env {:as :edn, :default :info} :taoensso.telemere/rt-min-level<.platform><.edn>)] - (enc/defonce ^:dynamic *rt-sig-filter* - "`SigFilter` used for runtime filtering, or nil." - (sigs/sig-filter + (enc/defonce ^:dynamic *rt-call-filter* + "`SpecFilter` used for runtime filtering, or nil." + (sigs/spec-filter {:kind-filter (or kind-filter (get base :kind-filter)) :ns-filter (or ns-filter (get base :ns-filter)) :id-filter (or id-filter (get base :id-filter)) @@ -276,11 +276,9 @@ (pr-str (assoc (MyRec. :x) :y :y))))) (deftype #_defrecord WrappedSignal - ;; Internal type to implement `sigs/IFilterableSignal`, - ;; incl. lazy + cached `signal-value_` field. [kind ns id level signal-value_] - sigs/IFilterableSignal - (allow-signal? [_ sig-filter] (sig-filter kind ns id level)) + sigs/ISignalHandling + (allow-signal? [_ spec-filter] (spec-filter kind ns id level)) (signal-debug [_] {:kind kind, :ns ns, :id id, :level level}) (signal-value [_ handler-sample-rate] (sigs/signal-with-combined-sample-rate handler-sample-rate @@ -396,16 +394,16 @@ :signal! ; opts => allowed? / unconditional run result (value or throw) '( [& opts-kvs] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, ; Undocumented - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, ; Undocumented + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error run & kvs]}]) :signal-allowed? ; opts => allowed? '( [& opts-kvs] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, ; Undocumented - elidable? location #_location* #_inst #_uid #_middleware #_middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, ; Undocumented + elidable? coords #_inst #_uid #_middleware #_middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, #_ctx #_ctx+ #_parent #_root #_trace?, #_do #_let #_data #_msg #_error #_run #_& #_kvs]}]) @@ -414,8 +412,8 @@ [id level] [id {:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error #_run & kvs]}]) @@ -423,8 +421,8 @@ '([opts-or-msg] [level msg] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error #_run & kvs]} msg]) @@ -433,8 +431,8 @@ '([opts-or-run] [id run] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error run & kvs]} run]) @@ -443,8 +441,8 @@ '([opts-or-run] [level run] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error run & kvs]} run]) @@ -453,8 +451,8 @@ '([opts-or-error] [id error] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error #_run & kvs]} error]) @@ -463,8 +461,8 @@ '([opts-or-run] [id run] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, catch-val, - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, catch-val, + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error #_run & kvs]} run]) @@ -473,8 +471,8 @@ '([] [opts-or-id] [{:as opts-map :keys - [#_defaults #_elide? #_allow? #_expansion-id, - elidable? location #_location* inst uid middleware middleware+, + [#_defaults #_elide? #_allow? #_callsite-id, + elidable? coords inst uid middleware middleware+, sample-rate kind ns id level when rate-limit rate-limit-by, ctx ctx+ parent root trace?, do let data msg error #_run & kvs]}]) @@ -524,6 +522,9 @@ clj? (not cljs?) {run-form :run} opts + ns-form* (get opts :ns :auto) + ns-form (auto-> ns-form* (str *ns*)) + show-run-val (get opts :run-val '_run-val) show-run-form (when run-form @@ -535,15 +536,16 @@ (list (first run-form) '...) (do run-form)))) - {:keys [#_expansion-id location elide? allow?]} - (sigs/filterable-expansion - {:sf-arity 4 - :ct-sig-filter ct-sig-filter - :*rt-sig-filter* `*rt-sig-filter*} + {:keys [#_callsite-id elide? allow?]} + (sigs/filter-call + {:cljs? cljs? + :sf-arity 4 + :ct-call-filter ct-call-filter + :*rt-call-filter* `*rt-call-filter*} (assoc opts - :location* (get opts :location* (enc/get-source &form &env)) - :bound-forms + :ns ns-form + :local-forms {:kind '__kind :ns '__ns :id '__id @@ -551,12 +553,11 @@ (if elide? run-form - (let [{ns-form :ns - line-form :line - column-form :column - file-form :file} location - - coords (when line-form [line-form column-form]) + (let [coords + (get opts :coords + (when (= ns-form* :auto) + ;; Auto coords iff auto ns + (truss/callsite-coords &form))) {inst-form :inst level-form :level @@ -605,10 +606,10 @@ kvs-form (not-empty (dissoc opts - :elidable? :location :location* :inst :uid :middleware :middleware+, + :elidable? :coords :inst :uid :middleware :middleware+, :sample-rate :ns :kind :id :level :filter :when #_:rate-limit #_:rate-limit-by, :ctx :ctx+ :parent #_:trace?, :do :let :data :msg :error, - :run :run-form :run-val, :elide? :allow? #_:expansion-id :otel/context)) + :run :run-form :run-val, :elide? :allow? #_:callsite-id :otel/context)) _ ; Compile-time validation (do @@ -616,7 +617,8 @@ (truss/ex-info! "Signals cannot have both `:run` and `:error` opts at the same time" {:run-form run-form :error-form error-form - :location location + :ns ns-form + :coords coords :other-opts (dissoc opts :run :error)})) (when-let [e (find opts :msg_)] ; Common typo/confusion @@ -782,13 +784,14 @@ defaults (get opts :defaults) opts (merge defaults (dissoc opts :defaults)) - {:keys [#_expansion-id #_location elide? allow?]} - (sigs/filterable-expansion - {:sf-arity 4 - :ct-sig-filter ct-sig-filter - :*rt-sig-filter* `*rt-sig-filter*} - (assoc opts :location* - (get opts :location* (enc/get-source &form &env))))] + {:keys [#_callsite-id elide? allow?]} + (sigs/filter-call + {:cljs? (boolean (:ns &env)) + :sf-arity 4 + :ct-call-filter ct-call-filter + :*rt-call-filter* `*rt-call-filter*} + (assoc opts :ns + (get opts :ns (str *ns*))))] (if elide? false `(if ~allow? true false))))) @@ -825,7 +828,7 @@ (defn test-interop! [msg test-fn] (let [msg (str "Interop test: " msg " (" (enc/uuid-str) ")") signal - (binding [*rt-sig-filter* nil] ; Without runtime filters + (binding [*rt-call-filter* nil] ; Without runtime filters (with-signal :raw :trap (test-fn msg)))] (= (force (get signal :msg_)) msg))))) diff --git a/main/src/taoensso/telemere/streams.clj b/main/src/taoensso/telemere/streams.clj index 18a1b65..b7f7b57 100644 --- a/main/src/taoensso/telemere/streams.clj +++ b/main/src/taoensso/telemere/streams.clj @@ -35,12 +35,11 @@ *err* (or prev-*err* orig-*err*)] (impl/signal! - {:location nil - :ns nil - :kind kind - :level level - :id id - :msg msg})))))))] + {:ns nil + :kind kind + :level level + :id id + :msg msg})))))))] (java.io.PrintStream. baos true ; Auto flush java.nio.charset.StandardCharsets/UTF_8))) diff --git a/main/src/taoensso/telemere/timbre.cljc b/main/src/taoensso/telemere/timbre.cljc index 2c39ef3..3109fff 100644 --- a/main/src/taoensso/telemere/timbre.cljc +++ b/main/src/taoensso/telemere/timbre.cljc @@ -118,21 +118,24 @@ ([ form] (enc/keep-callsite `(spy :debug nil ~form))) ([level form] (enc/keep-callsite `(spy ~level nil ~form))) ([level form-name form] - (let [location* (enc/get-source &form &env) + (let [ns (str *ns*) + coords (truss/callsite-coords &form) msg (if form-name `(fn [_form# value# error# nsecs#] (impl/default-trace-msg ~form-name value# error# nsecs#)) `(fn [_form# value# error# nsecs#] (impl/default-trace-msg '~form value# error# nsecs#)))] `(tel/spy! - {:location* ~location* - :id shim-id - :level ~level - :msg ~msg} + {:ns ~ns + :coords ~coords + :id shim-id + :level ~level + :msg ~msg} (tel/catch->error! - {:location* ~location* - :id shim-id} + {:ns ~ns + :coords ~coords + :id shim-id} ~form)))))) (comment diff --git a/main/src/taoensso/telemere/tools_logging.clj b/main/src/taoensso/telemere/tools_logging.clj index 4118578..84efa8d 100644 --- a/main/src/taoensso/telemere/tools_logging.clj +++ b/main/src/taoensso/telemere/tools_logging.clj @@ -21,19 +21,19 @@ (enabled? [_ level] (when-debug (println [:tools-logging/enabled? level logger-name])) (impl/signal-allowed? - {:location {:ns logger-name} - :kind :tools-logging - :level level})) + {:ns logger-name + :kind :tools-logging + :level level})) (write! [_ level throwable message] (when-debug (println [:tools-logging/write! level logger-name])) (impl/signal! - {:allow? true ; Pre-filtered by `enabled?` call - :location {:ns logger-name} - :kind :tools-logging - :level level - :error throwable - :msg message}) + {:allow? true ; Pre-filtered by `enabled?` call + :ns logger-name + :kind :tools-logging + :level level + :error throwable + :msg message}) nil)) (deftype TelemereLoggerFactory [] diff --git a/main/src/taoensso/telemere/utils.cljc b/main/src/taoensso/telemere/utils.cljc index 22103d2..d2f14b7 100644 --- a/main/src/taoensso/telemere/utils.cljc +++ b/main/src/taoensso/telemere/utils.cljc @@ -602,11 +602,11 @@ (when (and parent (not= parent root)) (af " parent: " (vf (format-parent ns parent)))) ; {:keys [id uid]} (when root (af " root: " (vf (format-parent ns root)))) ; {:keys [id uid]} - #?(:clj (when (enc/and* host incl-host?) (af " host: " (vf host)))) ; {:keys [ name ip]} - #?(:clj (when (enc/and* thread incl-thread?) (af " thread: " (vf thread)))) ; {:keys [group name id]} + #?(:clj (when (enc/and? host incl-host?) (af " host: " (vf host)))) ; {:keys [ name ip]} + #?(:clj (when (enc/and? thread incl-thread?) (af " thread: " (vf thread)))) ; {:keys [group name id]} (when (enc/not-empty-coll data) (af " data: " (vf data))) (when (enc/not-empty-coll ctx) (af " ctx: " (vf ctx))) - (when (enc/and* kvs incl-kvs?) (af " kvs: " (vf kvs)))) + (when (enc/and? kvs incl-kvs?) (af " kvs: " (vf kvs)))) (let [{:keys [run-form error]} signal] (when run-form diff --git a/main/test/taoensso/telemere_tests.cljc b/main/test/taoensso/telemere_tests.cljc index 3c367ab..f2583b3 100644 --- a/main/test/taoensso/telemere_tests.cljc +++ b/main/test/taoensso/telemere_tests.cljc @@ -40,22 +40,22 @@ (defn ex1! [] (throw ex1)) (defn ex1? [x] (= (truss/ex-root x) ex1))) -(let [rt-sig-filter_ (atom nil) - sig-handlers_ (atom nil)] +(let [rt-call-filter_ (atom nil) + sig-handlers_ (atom nil)] (test/use-fixtures :once (enc/test-fixtures {:before (fn [] - (reset! rt-sig-filter_ impl/*rt-sig-filter*) - (reset! sig-handlers_ impl/*sig-handlers*) - (enc/set-var-root! impl/*sig-handlers* nil) - (enc/set-var-root! impl/*rt-sig-filter* nil)) + (reset! rt-call-filter_ impl/*rt-call-filter*) + (reset! sig-handlers_ impl/*sig-handlers*) + (enc/set-var-root! impl/*sig-handlers* nil) + (enc/set-var-root! impl/*rt-call-filter* nil)) :after (fn [] - (enc/set-var-root! impl/*rt-sig-filter* @rt-sig-filter_) - (enc/set-var-root! impl/*sig-handlers* @sig-handlers_))}))) + (enc/set-var-root! impl/*rt-call-filter* @rt-call-filter_) + (enc/set-var-root! impl/*sig-handlers* @sig-handlers_))}))) ;;;; @@ -125,6 +125,12 @@ (is (> (inst-ms end) (inst-ms start)) "End instant is start + run-nsecs") (is (< (inst-ms end) 1e6) "End instant is start + run-nsecs")])])) + (testing "Callsite overrides" + [(is (sm? (with-sig (sig! { })) {:ns "taoensso.telemere-tests", :coords coords?})) + (is (sm? (with-sig (sig! {:ns "custom-ns" })) {:ns "custom-ns", :coords nil}) "Custom ns clears coords") + (is (sm? (with-sig (sig! { :coords [1 2]})) {:ns "taoensso.telemere-tests", :coords [1 2]}) "Custom coords") + (is (sm? (with-sig (sig! {:ns "custom-ns", :coords [1 2]})) {:ns "custom-ns", :coords [1 2]}) "Custom ns + coords")]) + (testing "Support arb extra user kvs" (let [sv (with-sig (sig! {:level :info, :my-k1 "v1", :my-k2 "v2"}))] (is (sm? sv {:level :info, :my-k1 "v1", :my-k2 "v2" diff --git a/slf4j/src/taoensso/telemere/slf4j.clj b/slf4j/src/taoensso/telemere/slf4j.clj index bc58ddd..f156ab8 100644 --- a/slf4j/src/taoensso/telemere/slf4j.clj +++ b/slf4j/src/taoensso/telemere/slf4j.clj @@ -108,20 +108,20 @@ [logger-name level] (when-debug (println [:slf4j/allowed? (sig-level level) logger-name])) (impl/signal-allowed? - {:location {:ns logger-name} ; Typically source class name - :kind :slf4j - :level (sig-level level)})) + {:ns logger-name ; Typically source class name + :kind :slf4j + :level (sig-level level)})) (defn- normalized-log! [logger-name level inst error msg-pattern args marker-names kvs] (when-debug (println [:slf4j/normalized-log! (sig-level level) logger-name])) (impl/signal! - {:allow? true ; Pre-filtered by `allowed?` call - :location {:ns logger-name} ; Typically source class name - :kind :slf4j - :level (sig-level level) - :inst inst - :error error + {:allow? true ; Pre-filtered by `allowed?` call + :ns logger-name ; Typically source class name + :kind :slf4j + :level (sig-level level) + :inst inst + :error error :ctx (when-let [hmap (org.slf4j.MDC/getCopyOfContextMap)]