package opentelemetry

  1. Overview
  2. Docs
Core library for instrumentation and serialization for https://opentelemetry.io

Install

dune-project
 Dependency

Authors

Maintainers

Sources

opentelemetry-0.91.tbz
sha256=4aaee2025957acf71434a027bd57ee699a9ae927e6b49804fb1e999e16a03694
sha512=f3ec030fc4ca0483c3fc143eaa802e2aa02b4c25e1a03ec967bd017fad8a4ef6287e9f9688486434d1ac2fc403217658b61d2c7f3709c092c939b93f412ee5c5

doc/src/opentelemetry/dynamic_enricher.ml.html

Source file dynamic_enricher.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
(** Hooks to add attributes to every span or log *)

type t = unit -> Key_value.t list
(** A dynamic enricher is a callback that produces high-cardinality attributes
    at span/log-record creation time. This enables "wide events". *)

open struct
  let enrichers_ : t Alist.t = Alist.make ()
end

let add (f : t) : unit = Alist.add enrichers_ f

let collect () : Key_value.t list =
  let acc = ref [] in
  List.iter
    (fun f ->
      match f () with
      | kvs -> acc := List.rev_append kvs !acc
      | exception exn ->
        let bt = Printexc.get_raw_backtrace () in
        Self_debug.log Warning (fun () ->
            Printf.sprintf "dynamic_enricher raised %s\n%s"
              (Printexc.to_string exn)
              (Printexc.raw_backtrace_to_string bt)))
    (Alist.get enrichers_);
  !acc