package trace
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
A lightweight stub for tracing/observability, agnostic in how data is collected
Install
dune-project
Dependency
Authors
Maintainers
Sources
trace-0.11.tbz
sha256=a29329fcfb191a98bfed26c05c300ed9e1e915b73cc59f51e9d9cdc4d1f158bc
sha512=ff77a4ef19375f4ad3b1ddff7336657a4a5695924b679ac2c36a77b14b95c63d126539efd1590f83b415a1288bb843a5fb4308e53a807dcc22456cb40a8e0026
doc/src/trace.util/multi_collector.ml.html
Source file multi_collector.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109open Trace_core open struct type st = Collector.t array type span += Span_combine of span array let init st = for i = 0 to Array.length st - 1 do let (Collector.C_some (st, cb)) = Array.get st i in cb.init st done [@ocaml.warning "-8"] let shutdown st = for i = 0 to Array.length st - 1 do let (Collector.C_some (st, cb)) = Array.get st i in cb.shutdown st done [@ocaml.warning "-8"] let enter_span st ~__FUNCTION__ ~__FILE__ ~__LINE__ ~level ~params ~data ~parent name : span = let spans = Array.map (fun [@ocaml.warning "-8"] coll -> let (Collector.C_some (st, cb)) = coll in cb.enter_span st ~__FUNCTION__ ~__FILE__ ~__LINE__ ~level ~params ~data ~parent name) st in Span_combine spans let exit_span st span = match span with | Span_combine spans -> assert (Array.length spans = Array.length st); for i = 0 to Array.length st - 1 do let (Collector.C_some (st, cb)) = Array.get st i in cb.exit_span st spans.(i) done [@ocaml.warning "-8"] | _ -> () let add_data_to_span st span data = match span with | Span_combine spans when data <> [] -> assert (Array.length spans = Array.length st); for i = 0 to Array.length st - 1 do let (Collector.C_some (st, cb)) = Array.get st i in cb.add_data_to_span st spans.(i) data done [@ocaml.warning "-8"] | _ -> () let message st ~level ~params ~data ~span msg = for i = 0 to Array.length st - 1 do let (Collector.C_some (st, cb)) = Array.get st i in cb.message st ~level ~span ~params ~data msg done [@ocaml.warning "-8"] let metric st ~level ~params ~data name m = for i = 0 to Array.length st - 1 do let (Collector.C_some (st, cb)) = Array.get st i in cb.metric st ~level ~params ~data name m done [@ocaml.warning "-8"] let extension st ~level ev : unit = for i = 0 to Array.length st - 1 do let (Collector.C_some (st, cb)) = Array.get st i in cb.extension st ~level ev done [@ocaml.warning "-8"] let enabled st level : bool = Array.exists (fun (Collector.C_some (st, cb)) -> cb.enabled st level) st [@ocaml.warning "-8"] let combine_cb : st Collector.Callbacks.t = { Collector.Callbacks.init; enter_span; exit_span; enabled; message; add_data_to_span; metric; extension; shutdown; } end let combine_l (cs : Collector.t list) : Collector.t = let cs = List.filter (function | Collector.C_none -> false | Collector.C_some _ -> true) cs in match cs with | [] -> C_none | [ c ] -> c | _ -> C_some (Array.of_list cs, combine_cb) let combine (s1 : Collector.t) (s2 : Collector.t) : Collector.t = combine_l [ s1; s2 ]
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>