Skip to content

Commit f6a8970

Browse files
committed
[new] Add Trove handler
1 parent 2a6089e commit f6a8970

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

project.clj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838

3939
:dependencies
4040
[[org.clojure/test.check "1.1.1"]
41+
[com.taoensso/trove "1.0.0-beta1"]
4142
[com.taoensso/telemere "1.0.1"]
4243
[com.taoensso/timbre "6.7.1"]]
4344

src/taoensso/tufte/trove.cljc

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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

Comments
 (0)