From 9e65566d886e7fee80c7ea2315bd4ce78f7303cf Mon Sep 17 00:00:00 2001 From: Elliott Cable Date: Thu, 3 Aug 2023 20:16:34 +0000 Subject: [PATCH] trace-collector: Use OTel semconv for __FUNCTION__ etc --- src/trace/opentelemetry_trace.ml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/trace/opentelemetry_trace.ml b/src/trace/opentelemetry_trace.ml index 86e3f61a..b987829d 100644 --- a/src/trace/opentelemetry_trace.ml +++ b/src/trace/opentelemetry_trace.ml @@ -13,7 +13,7 @@ let span_of_i64 (id : int64) : Otel.Span_id.t = let collector () : Trace.collector = let module M = struct - let with_span ~__FUNCTION__:_ ~__FILE__ ~__LINE__ ~data name cb = + let with_span ~__FUNCTION__ ~__FILE__ ~__LINE__ ~data name cb = let span_id = Otel.Span_id.create () in let span = conv_span_to_i64 span_id in @@ -36,8 +36,20 @@ let collector () : Trace.collector = let end_time = Otel.Timestamp_ns.now_unix_ns () in let o_span : Otel.Span.t = + let last_dot = String.rindex __FUNCTION__ '.' in + let module_path = String.sub __FUNCTION__ 0 last_dot in + let function_name = + String.sub __FUNCTION__ (last_dot + 1) + (String.length __FUNCTION__ - last_dot - 1) + in let attrs = - [ "file", `String __FILE__; "line", `Int __LINE__ ] @ data + [ + "code.filepath", `String __FILE__; + "code.lineno", `Int __LINE__; + "code.function", `String function_name; + "code.namespace", `String module_path; + ] + @ data in Otel.Span.create ~trace_id:new_scope.trace_id ~id:span_id ~start_time ~end_time ~attrs name