[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:
Peter Taoussanis 2024-08-13 11:08:17 +02:00
parent badbb2c768
commit 599236f451
2 changed files with 17 additions and 11 deletions

View file

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

View file

@ -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"