|
| 1 | +(ns taoensso.tufte.trove |
| 2 | + "Handler for Trove, |
| 3 | + Ref. <https://www.taoensso.com/trove>." |
| 4 | + (:require |
| 5 | + [taoensso.encore :as enc] |
| 6 | + [taoensso.trove :as trove] |
| 7 | + [taoensso.tufte :as tufte])) |
| 8 | + |
| 9 | +(defn handler:trove |
| 10 | + "Alpha, subject to change! |
| 11 | + Returns a signal handler that: |
| 12 | + - Takes a Tufte profiling signal (map). |
| 13 | + - Uses Trove to log the signal. |
| 14 | +
|
| 15 | + Options: |
| 16 | + `:level-fn` ----------- (fn [tufte-level]) => trove-level (default `identity`) |
| 17 | + `:format-pstats-opts` - Opts map provided to `format-pstats` (default nil)" |
| 18 | + |
| 19 | + ([] (handler:trove nil)) |
| 20 | + ([{:keys [level-fn format-pstats-opts] |
| 21 | + :or {level-fn identity}}] |
| 22 | + |
| 23 | + (fn a-handler:trove [signal] |
| 24 | + (when-let [{:keys [#_inst ns coords, id level, ctx data, |
| 25 | + pstats format-pstats-fn]} signal] |
| 26 | + (trove/log! |
| 27 | + {:ns ns |
| 28 | + :coords coords |
| 29 | + :level (level-fn level) |
| 30 | + :data data |
| 31 | + :tufte/ctx ctx ; -> kvs |
| 32 | + :tufte/pstats pstats ; -> kvs |
| 33 | + :msg |
| 34 | + (when-let [ff format-pstats-fn] |
| 35 | + (when-let [fs (ff pstats (conj {:incl-newline? false} format-pstats-opts))] |
| 36 | + (str "Tufte pstats:" enc/newline fs)))}))))) |
| 37 | + |
| 38 | +(comment |
| 39 | + ((handler:trove) (#'tufte/dummy-signal)) |
| 40 | + ((handler:trove) (assoc (#'tufte/dummy-signal) :data {:k1 :v1}, :ctx {:k1 :v1}))) |
0 commit comments