mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-16 17:41:12 +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
|
||||
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
|
||||
"Returns cached OpenTelemetry-style name: `:foo/bar-baz` -> \"foo_bar_baz\", etc.
|
||||
Ref. <https://opentelemetry.io/docs/specs/semconv/general/attribute-naming/>."
|
||||
|
|
@ -49,10 +61,11 @@
|
|||
;; AttributeTypes: String, Long, Double, Boolean, and arrays
|
||||
(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*
|
||||
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))
|
||||
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..."
|
||||
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))
|
||||
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)))
|
||||
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]
|
||||
(let [v1 (first v)]
|
||||
|
|
@ -122,7 +128,7 @@
|
|||
|
||||
"error" (utils/error-signal? signal) ; Standard key
|
||||
"kind" kind
|
||||
"level" level
|
||||
"level" (when level (level->string level))
|
||||
"id" id
|
||||
"uid" uid
|
||||
|
||||
|
|
|
|||
|
|
@ -969,7 +969,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]
|
||||
|
|
@ -1010,7 +1010,7 @@
|
|||
"exception.data.k1" "v1"
|
||||
|
||||
"kind" :event
|
||||
"level" :info
|
||||
"level" "INFO"
|
||||
"id" :taoensso.telemere-tests/id1
|
||||
"parent.id" :taoensso.telemere-tests/parent-id1
|
||||
"uid" #uuid "7e9c1df6-78e4-40ac-8c5c-e2353df9ab82"
|
||||
|
|
|
|||
Loading…
Reference in a new issue