mirror of
https://github.com/ocaml-tracing/ocaml-trace.git
synced 2026-03-07 18:37:56 -05:00
add enabled to the collector
this way we can have collectors that only accept some levels
This commit is contained in:
parent
a4144ff3d1
commit
c9cd56d0b5
4 changed files with 23 additions and 10 deletions
|
|
@ -30,6 +30,9 @@ module Callbacks = struct
|
||||||
(** Exit a span. Must be called exactly once per span. Additional
|
(** Exit a span. Must be called exactly once per span. Additional
|
||||||
constraints on nesting, threads, etc. vary per collector. *)
|
constraints on nesting, threads, etc. vary per collector. *)
|
||||||
add_data_to_span: 'st -> span -> (string * user_data) list -> unit;
|
add_data_to_span: 'st -> span -> (string * user_data) list -> unit;
|
||||||
|
enabled: 'st -> Level.t -> bool;
|
||||||
|
(** Is the collector accepting spans/messages/metrics with this level?
|
||||||
|
*)
|
||||||
message:
|
message:
|
||||||
'st ->
|
'st ->
|
||||||
level:Level.t ->
|
level:Level.t ->
|
||||||
|
|
@ -58,13 +61,14 @@ module Callbacks = struct
|
||||||
(** Callbacks taking a state ['st] *)
|
(** Callbacks taking a state ['st] *)
|
||||||
|
|
||||||
(** Helper to create backends in a future-proof way *)
|
(** Helper to create backends in a future-proof way *)
|
||||||
let make ~enter_span ~exit_span ~add_data_to_span ~message ~metric
|
let make ?(enabled = fun _ _ -> true) ~enter_span ~exit_span ~add_data_to_span
|
||||||
?(extension = fun _ ~level:_ _ -> ()) ?(init = ignore)
|
~message ~metric ?(extension = fun _ ~level:_ _ -> ()) ?(init = ignore)
|
||||||
?(shutdown = ignore) () : _ t =
|
?(shutdown = ignore) () : _ t =
|
||||||
{
|
{
|
||||||
enter_span;
|
enter_span;
|
||||||
exit_span;
|
exit_span;
|
||||||
add_data_to_span;
|
add_data_to_span;
|
||||||
|
enabled;
|
||||||
message;
|
message;
|
||||||
metric;
|
metric;
|
||||||
extension;
|
extension;
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ let[@inline] set_default_level l = A.set default_level_ l
|
||||||
let[@inline] set_current_level l = A.set current_level_ l
|
let[@inline] set_current_level l = A.set current_level_ l
|
||||||
let[@inline] get_current_level () = A.get current_level_
|
let[@inline] get_current_level () = A.get current_level_
|
||||||
|
|
||||||
let[@inline] check_level_ ~level () : bool =
|
let[@inline] check_level_ ~level st (cbs : _ Collector.Callbacks.t) : bool =
|
||||||
Level.leq level (A.get current_level_)
|
Level.leq level (A.get current_level_) && cbs.enabled st level
|
||||||
|
|
||||||
let parent_of_span_opt_opt = function
|
let parent_of_span_opt_opt = function
|
||||||
| None -> P_unknown
|
| None -> P_unknown
|
||||||
|
|
@ -58,7 +58,7 @@ let with_span_collector_ st (cbs : _ Collector.Callbacks.t) ?__FUNCTION__
|
||||||
let[@inline] with_span ?(level = A.get default_level_) ?__FUNCTION__ ~__FILE__
|
let[@inline] with_span ?(level = A.get default_level_) ?__FUNCTION__ ~__FILE__
|
||||||
~__LINE__ ?parent ?params ?data name f =
|
~__LINE__ ?parent ?params ?data name f =
|
||||||
match A.get collector with
|
match A.get collector with
|
||||||
| C_some (st, cbs) when check_level_ ~level () ->
|
| C_some (st, cbs) when check_level_ ~level st cbs ->
|
||||||
with_span_collector_ st cbs ?__FUNCTION__ ~__FILE__ ~__LINE__ ~level ?parent
|
with_span_collector_ st cbs ?__FUNCTION__ ~__FILE__ ~__LINE__ ~level ?parent
|
||||||
?params ?data name f
|
?params ?data name f
|
||||||
| _ ->
|
| _ ->
|
||||||
|
|
@ -68,7 +68,7 @@ let[@inline] with_span ?(level = A.get default_level_) ?__FUNCTION__ ~__FILE__
|
||||||
let[@inline] enter_span ?(level = A.get default_level_) ?__FUNCTION__ ~__FILE__
|
let[@inline] enter_span ?(level = A.get default_level_) ?__FUNCTION__ ~__FILE__
|
||||||
~__LINE__ ?flavor ?parent ?(params = []) ?data name : span =
|
~__LINE__ ?flavor ?parent ?(params = []) ?data name : span =
|
||||||
match A.get collector with
|
match A.get collector with
|
||||||
| C_some (st, cbs) when check_level_ ~level () ->
|
| C_some (st, cbs) when check_level_ ~level st cbs ->
|
||||||
let params =
|
let params =
|
||||||
match flavor with
|
match flavor with
|
||||||
| None -> params
|
| None -> params
|
||||||
|
|
@ -98,13 +98,13 @@ let message_collector_ st (cbs : _ Collector.Callbacks.t) ~level ?span
|
||||||
let[@inline] message ?(level = A.get default_level_) ?span ?params ?data msg :
|
let[@inline] message ?(level = A.get default_level_) ?span ?params ?data msg :
|
||||||
unit =
|
unit =
|
||||||
match A.get collector with
|
match A.get collector with
|
||||||
| C_some (st, cbs) when check_level_ ~level () ->
|
| C_some (st, cbs) when check_level_ ~level st cbs ->
|
||||||
(message_collector_ [@inlined never]) st cbs ~level ?span ?params ?data msg
|
(message_collector_ [@inlined never]) st cbs ~level ?span ?params ?data msg
|
||||||
| _ -> ()
|
| _ -> ()
|
||||||
|
|
||||||
let messagef ?(level = A.get default_level_) ?span ?params ?data k =
|
let messagef ?(level = A.get default_level_) ?span ?params ?data k =
|
||||||
match A.get collector with
|
match A.get collector with
|
||||||
| C_some (st, cbs) when check_level_ ~level () ->
|
| C_some (st, cbs) when check_level_ ~level st cbs ->
|
||||||
k (fun fmt ->
|
k (fun fmt ->
|
||||||
Format.kasprintf
|
Format.kasprintf
|
||||||
(fun str -> message_collector_ st cbs ~level ?span ?params ?data str)
|
(fun str -> message_collector_ st cbs ~level ?span ?params ?data str)
|
||||||
|
|
@ -114,7 +114,7 @@ let messagef ?(level = A.get default_level_) ?span ?params ?data k =
|
||||||
let metric ?(level = A.get default_level_) ?(params = [])
|
let metric ?(level = A.get default_level_) ?(params = [])
|
||||||
?(data = data_empty_build_) name m : unit =
|
?(data = data_empty_build_) name m : unit =
|
||||||
match A.get collector with
|
match A.get collector with
|
||||||
| C_some (st, cbs) when check_level_ ~level () ->
|
| C_some (st, cbs) when check_level_ ~level st cbs ->
|
||||||
let data = data () in
|
let data = data () in
|
||||||
cbs.metric st ~level ~params ~data name m
|
cbs.metric st ~level ~params ~data name m
|
||||||
| _ -> ()
|
| _ -> ()
|
||||||
|
|
@ -153,7 +153,8 @@ type extension_event = Types.extension_event = ..
|
||||||
|
|
||||||
let[@inline] extension_event ?(level = A.get default_level_) ev : unit =
|
let[@inline] extension_event ?(level = A.get default_level_) ev : unit =
|
||||||
match A.get collector with
|
match A.get collector with
|
||||||
| C_some (st, cbs) when check_level_ ~level () -> cbs.extension st ~level ev
|
| C_some (st, cbs) when check_level_ ~level st cbs ->
|
||||||
|
cbs.extension st ~level ev
|
||||||
| _ -> ()
|
| _ -> ()
|
||||||
|
|
||||||
let set_thread_name name : unit =
|
let set_thread_name name : unit =
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,7 @@ open struct
|
||||||
let metric self ~level ~params ~data name v =
|
let metric self ~level ~params ~data name v =
|
||||||
self.cbs.metric self.state ~level ~params ~data name v
|
self.cbs.metric self.state ~level ~params ~data name v
|
||||||
|
|
||||||
|
let enabled _ _ = true
|
||||||
let init (self : _ st) = self.cbs.init self.state
|
let init (self : _ st) = self.cbs.init self.state
|
||||||
|
|
||||||
let shutdown (self : _ st) : unit =
|
let shutdown (self : _ st) : unit =
|
||||||
|
|
@ -132,6 +133,7 @@ open struct
|
||||||
enter_span;
|
enter_span;
|
||||||
exit_span;
|
exit_span;
|
||||||
add_data_to_span;
|
add_data_to_span;
|
||||||
|
enabled;
|
||||||
message;
|
message;
|
||||||
metric;
|
metric;
|
||||||
init;
|
init;
|
||||||
|
|
|
||||||
|
|
@ -73,11 +73,17 @@ open struct
|
||||||
done
|
done
|
||||||
[@ocaml.warning "-8"]
|
[@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 =
|
let combine_cb : st Collector.Callbacks.t =
|
||||||
{
|
{
|
||||||
Collector.Callbacks.init;
|
Collector.Callbacks.init;
|
||||||
enter_span;
|
enter_span;
|
||||||
exit_span;
|
exit_span;
|
||||||
|
enabled;
|
||||||
message;
|
message;
|
||||||
add_data_to_span;
|
add_data_to_span;
|
||||||
metric;
|
metric;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue