mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-16 17:41:12 +00:00
[fix] [#10] OpenTelemetry handler: render keywords as plain strings
Before: `:foo/bar` -> ":foo/bar" After: `:foo/bar` -> "foo/bar"
This commit is contained in:
parent
863cea15fa
commit
6e94215e7a
2 changed files with 23 additions and 12 deletions
|
|
@ -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"]}})))
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
Loading…
Reference in a new issue