Skip to content

Commit

Permalink
[fix] [#10] OpenTelemetry handler: render keywords as plain strings
Browse files Browse the repository at this point in the history
Before: `:foo/bar` -> ":foo/bar"
After:  `:foo/bar` ->  "foo/bar"
  • Loading branch information
ptaoussanis committed Aug 7, 2024
1 parent 863cea1 commit 6e94215
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 deletions.
37 changes: 24 additions & 13 deletions src/taoensso/telemere/open_telemetry.clj
Original file line number Diff line number Diff line change
Expand Up @@ -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))

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) (-> 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)))
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..."

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)))

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]
Expand Down Expand Up @@ -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"]}})))
2 changes: 1 addition & 1 deletion test/taoensso/telemere_tests.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down

0 comments on commit 6e94215

Please sign in to comment.