diff --git a/src/taoensso/telemere/open_telemetry.clj b/src/taoensso/telemere/open_telemetry.clj index 125470f..12e01cb 100644 --- a/src/taoensso/telemere/open_telemetry.clj +++ b/src/taoensso/telemere/open_telemetry.clj @@ -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. ." @@ -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 diff --git a/test/taoensso/telemere_tests.cljc b/test/taoensso/telemere_tests.cljc index f85ef54..ea6dabd 100644 --- a/test/taoensso/telemere_tests.cljc +++ b/test/taoensso/telemere_tests.cljc @@ -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"