mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-17 01:51:10 +00:00
[mod] OpenTelemetry handler: revert #10
On reflection the choice to drop ":" (and so type info) from ALL attribute keywords seems excessive. We can instead restrict the change only to the :level value. Feedback welcome.
This commit is contained in:
parent
badbb2c768
commit
599236f451
2 changed files with 17 additions and 11 deletions
|
|
@ -31,6 +31,18 @@
|
||||||
:report Severity/INFO4
|
:report Severity/INFO4
|
||||||
Severity/UNDEFINED_SEVERITY_NUMBER))
|
Severity/UNDEFINED_SEVERITY_NUMBER))
|
||||||
|
|
||||||
|
(defn- level->string
|
||||||
|
^String [level]
|
||||||
|
(case level
|
||||||
|
:trace "TRACE"
|
||||||
|
:debug "DEBUG"
|
||||||
|
:info "INFO"
|
||||||
|
:warn "WARN"
|
||||||
|
:error "ERROR"
|
||||||
|
:fatal "FATAL"
|
||||||
|
:report "INFO4"
|
||||||
|
(str level)))
|
||||||
|
|
||||||
(def ^:private ^String attr-name
|
(def ^:private ^String attr-name
|
||||||
"Returns cached OpenTelemetry-style name: `:foo/bar-baz` -> \"foo_bar_baz\", etc.
|
"Returns cached OpenTelemetry-style name: `:foo/bar-baz` -> \"foo_bar_baz\", etc.
|
||||||
Ref. <https://opentelemetry.io/docs/specs/semconv/general/attribute-naming/>."
|
Ref. <https://opentelemetry.io/docs/specs/semconv/general/attribute-naming/>."
|
||||||
|
|
@ -49,10 +61,11 @@
|
||||||
;; AttributeTypes: String, Long, Double, Boolean, and arrays
|
;; AttributeTypes: String, Long, Double, Boolean, and arrays
|
||||||
(defprotocol IAttr+ (^:private attr+ [_aval akey builder]))
|
(defprotocol IAttr+ (^:private attr+ [_aval akey builder]))
|
||||||
(extend-protocol IAttr+
|
(extend-protocol IAttr+
|
||||||
nil (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) "nil")) ; Like pr-edn*
|
nil (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) "nil")) ; As 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))
|
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..."
|
java.util.UUID (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (str v))) ; "d4fc65a0..."
|
||||||
|
clojure.lang.Named (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (str v))) ; ":foo/bar"
|
||||||
|
|
||||||
Long (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) v))
|
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)))
|
Integer (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (long v)))
|
||||||
|
|
@ -62,13 +75,6 @@
|
||||||
Float (attr+ [v k ^AttributesBuilder b] (.put b (attr-name k) (double 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)))
|
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
|
clojure.lang.IPersistentCollection
|
||||||
(attr+ [v k ^AttributesBuilder b]
|
(attr+ [v k ^AttributesBuilder b]
|
||||||
(let [v1 (first v)]
|
(let [v1 (first v)]
|
||||||
|
|
@ -122,7 +128,7 @@
|
||||||
|
|
||||||
"error" (utils/error-signal? signal) ; Standard key
|
"error" (utils/error-signal? signal) ; Standard key
|
||||||
"kind" kind
|
"kind" kind
|
||||||
"level" level
|
"level" (when level (level->string level))
|
||||||
"id" id
|
"id" id
|
||||||
"uid" uid
|
"uid" uid
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -969,7 +969,7 @@
|
||||||
:strings ["a" "b" "c"],
|
:strings ["a" "b" "c"],
|
||||||
:map {:k1 "v1"}}))
|
: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"
|
(testing "signal->attrs-map"
|
||||||
(let [attrs-map #'otel/signal->attrs-map]
|
(let [attrs-map #'otel/signal->attrs-map]
|
||||||
|
|
@ -1010,7 +1010,7 @@
|
||||||
"exception.data.k1" "v1"
|
"exception.data.k1" "v1"
|
||||||
|
|
||||||
"kind" :event
|
"kind" :event
|
||||||
"level" :info
|
"level" "INFO"
|
||||||
"id" :taoensso.telemere-tests/id1
|
"id" :taoensso.telemere-tests/id1
|
||||||
"parent.id" :taoensso.telemere-tests/parent-id1
|
"parent.id" :taoensso.telemere-tests/parent-id1
|
||||||
"uid" #uuid "7e9c1df6-78e4-40ac-8c5c-e2353df9ab82"
|
"uid" #uuid "7e9c1df6-78e4-40ac-8c5c-e2353df9ab82"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue