diff --git a/src/taoensso/telemere/open_telemetry.clj b/src/taoensso/telemere/open_telemetry.clj index f7bcb69..f59c004 100644 --- a/src/taoensso/telemere/open_telemetry.clj +++ b/src/taoensso/telemere/open_telemetry.clj @@ -50,19 +50,24 @@ (defprotocol IAttr+ (^:private attr+ [_aval akey builder])) (extend-protocol IAttr+ nil (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) "nil")) ; Like pr-edn* - Boolean (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) + Boolean (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) + String (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) + java.util.UUID (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (str v))) ; "d4fc65a0..." - String (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) - clojure.lang.Named (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (-> v str))) ; ":foo/bar", etc. - java.util.UUID (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (-> v str))) ; "d4fc65a0..." + Long (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) + Integer (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (long v))) + Short (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (long v))) + Byte (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (long v))) + Double (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) + Float (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (double v))) + Number (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (double v))) - Long (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) - Integer (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (-> v long))) - Short (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (-> v long))) - Byte (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (-> v long))) - Double (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v)) - Float (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (-> v double))) - Number (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (-> v double))) + clojure.lang.Named + (attr+ [v k ^AttributesBuilder b] + (.put b (attr-name k) + #_(str v) ; ":foo/bar", etc. + (let [n (name v)] (if-let [ns (namespace v)] (str ns "/" n) n)) ; "foo/bar", etc. + )) clojure.lang.IPersistentCollection (attr+ [v k ^AttributesBuilder b] @@ -233,3 +238,9 @@ (.setBody b body)) (.emit b))))))) + +(comment + (as-attrs + (signal->attrs-map :my-attrs + {:level :info :data {:ns/kw1 :v1 :ns/kw2 :v2} + :my-attrs {:longs [1 1 2 3] :strs ["a" "b" "c"]}}))) diff --git a/test/taoensso/telemere_tests.cljc b/test/taoensso/telemere_tests.cljc index e555523..b5580af 100644 --- a/test/taoensso/telemere_tests.cljc +++ b/test/taoensso/telemere_tests.cljc @@ -917,7 +917,7 @@ :strings ["a" "b" "c"], :map {:k1 "v1"}})) - "{bools=[true, false, false], double=5.0, doubles=[5.0, 5.0, 5.0], keyword=\":foo/bar\", long=5, longs=[5, 5, 5], map=[[:k1 \"v1\"]], mixed=[5, \"5\", nil], nil=\"nil\", string=\"s\", strings=[\"a\", \"b\", \"c\"]}"))) + "{bools=[true, false, false], double=5.0, doubles=[5.0, 5.0, 5.0], keyword=\"foo/bar\", long=5, longs=[5, 5, 5], map=[[:k1 \"v1\"]], mixed=[5, \"5\", nil], nil=\"nil\", string=\"s\", strings=[\"a\", \"b\", \"c\"]}"))) (testing "signal->attrs-map" (let [attrs-map #'otel/signal->attrs-map]