From 390ec68bfc69efa1a0c406b9be6cb83564f0974b Mon Sep 17 00:00:00 2001 From: "iguerNL@Functori" Date: Thu, 6 Mar 2025 11:29:12 +0100 Subject: [PATCH] Libs/event_logging: add the ability to prefix events names with sections --- src/lib_event_logging/internal_event.ml | 57 +++++++++++++++++------- src/lib_event_logging/internal_event.mli | 14 ++++++ 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/src/lib_event_logging/internal_event.ml b/src/lib_event_logging/internal_event.ml index 5c89b53af46f..9fd6eaca4c52 100644 --- a/src/lib_event_logging/internal_event.ml +++ b/src/lib_event_logging/internal_event.ml @@ -802,8 +802,15 @@ module Simple = struct ~name (Data_encoding.With_version.first_version encoding) - let declare_0 ?alternative_color ?section ~name ~msg ?(level = Info) () = + let may_prefix_name ~prefix_name_with_section ~name ~section = + match (prefix_name_with_section, section) with + | true, Some sections -> Format.asprintf "%a.%s" Section.pp sections name + | false, _ | true, None -> name + + let declare_0 ?alternative_color ?section ?(prefix_name_with_section = false) + ~name ~msg ?(level = Info) () = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [] msg in let module Definition : EVENT_DEFINITION with type t = unit = struct type t = unit @@ -830,9 +837,11 @@ module Simple = struct emit_at_top_level = (fun () -> Event.emit_at_top_level ()); } - let declare_1 (type a) ?alternative_color ?section ~name ~msg ?(level = Info) - ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) = + let declare_1 (type a) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name] msg in let module Definition : EVENT_DEFINITION with type t = a = struct type t = a @@ -864,10 +873,12 @@ module Simple = struct emit_at_top_level = (fun parameter -> Event.emit_at_top_level parameter); } - let declare_2 (type a b) ?alternative_color ?section ~name ~msg - ?(level = Info) ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 + let declare_2 (type a b) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 (f2_name, (f2_enc : b Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name; f2_name] msg in let module Definition : EVENT_DEFINITION with type t = a * b = struct type t = a * b @@ -906,11 +917,13 @@ module Simple = struct emit_at_top_level = (fun parameters -> Event.emit_at_top_level parameters); } - let declare_3 (type a b c) ?alternative_color ?section ~name ~msg - ?(level = Info) ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 + let declare_3 (type a b c) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 (f2_name, (f2_enc : b Data_encoding.t)) ?pp3 (f3_name, (f3_enc : c Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name; f2_name; f3_name] msg in let module Definition : EVENT_DEFINITION with type t = a * b * c = struct type t = a * b * c @@ -951,12 +964,14 @@ module Simple = struct emit_at_top_level = (fun parameters -> Event.emit_at_top_level parameters); } - let declare_4 (type a b c d) ?alternative_color ?section ~name ~msg - ?(level = Info) ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 + let declare_4 (type a b c d) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 (f2_name, (f2_enc : b Data_encoding.t)) ?pp3 (f3_name, (f3_enc : c Data_encoding.t)) ?pp4 (f4_name, (f4_enc : d Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name; f2_name; f3_name; f4_name] msg in let module Definition : EVENT_DEFINITION with type t = a * b * c * d = struct @@ -1000,13 +1015,15 @@ module Simple = struct emit_at_top_level = (fun parameters -> Event.emit_at_top_level parameters); } - let declare_5 (type a b c d e) ?alternative_color ?section ~name ~msg - ?(level = Info) ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 + let declare_5 (type a b c d e) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 (f2_name, (f2_enc : b Data_encoding.t)) ?pp3 (f3_name, (f3_enc : c Data_encoding.t)) ?pp4 (f4_name, (f4_enc : d Data_encoding.t)) ?pp5 (f5_name, (f5_enc : e Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name; f2_name; f3_name; f4_name; f5_name] msg in @@ -1054,14 +1071,16 @@ module Simple = struct emit_at_top_level = (fun parameters -> Event.emit_at_top_level parameters); } - let declare_6 (type a b c d e f) ?alternative_color ?section ~name ~msg - ?(level = Info) ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 + let declare_6 (type a b c d e f) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 (f2_name, (f2_enc : b Data_encoding.t)) ?pp3 (f3_name, (f3_enc : c Data_encoding.t)) ?pp4 (f4_name, (f4_enc : d Data_encoding.t)) ?pp5 (f5_name, (f5_enc : e Data_encoding.t)) ?pp6 (f6_name, (f6_enc : f Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name; f2_name; f3_name; f4_name; f5_name; f6_name] msg in @@ -1111,8 +1130,9 @@ module Simple = struct emit_at_top_level = (fun parameters -> Event.emit_at_top_level parameters); } - let declare_7 (type a b c d e f g) ?alternative_color ?section ~name ~msg - ?(level = Info) ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 + let declare_7 (type a b c d e f g) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 (f2_name, (f2_enc : b Data_encoding.t)) ?pp3 (f3_name, (f3_enc : c Data_encoding.t)) ?pp4 (f4_name, (f4_enc : d Data_encoding.t)) ?pp5 @@ -1120,6 +1140,7 @@ module Simple = struct (f6_name, (f6_enc : f Data_encoding.t)) ?pp7 (f7_name, (f7_enc : g Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name; f2_name; f3_name; f4_name; f5_name; f6_name; f7_name] @@ -1173,8 +1194,9 @@ module Simple = struct emit_at_top_level = (fun parameters -> Event.emit_at_top_level parameters); } - let declare_8 (type a b c d e f g h) ?alternative_color ?section ~name ~msg - ?(level = Info) ?pp1 (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 + let declare_8 (type a b c d e f g h) ?alternative_color ?section + ?(prefix_name_with_section = false) ~name ~msg ?(level = Info) ?pp1 + (f1_name, (f1_enc : a Data_encoding.t)) ?pp2 (f2_name, (f2_enc : b Data_encoding.t)) ?pp3 (f3_name, (f3_enc : c Data_encoding.t)) ?pp4 (f4_name, (f4_enc : d Data_encoding.t)) ?pp5 @@ -1183,6 +1205,7 @@ module Simple = struct (f7_name, (f7_enc : g Data_encoding.t)) ?pp8 (f8_name, (f8_enc : h Data_encoding.t)) = let section = make_section section in + let name = may_prefix_name ~prefix_name_with_section ~name ~section in let parsed_msg = parse_msg [f1_name; f2_name; f3_name; f4_name; f5_name; f6_name; f7_name; f8_name] diff --git a/src/lib_event_logging/internal_event.mli b/src/lib_event_logging/internal_event.mli index a4fb6a689d1e..47863f921053 100644 --- a/src/lib_event_logging/internal_event.mli +++ b/src/lib_event_logging/internal_event.mli @@ -214,6 +214,8 @@ module Simple : sig let inject = Internal_event.Simple.declare_2 ~name: "inject" + ~section:["foo"; "bar"] + ~prefix_name_with_sections:false ~msg: "injected block {hash}" ("level", int) ("hash", string) @@ -221,6 +223,9 @@ module Simple : sig You must declare events only once for a given name. Usually you should thus declare them as global variables. + A way to enforce name uniqueness is to set [prefix_name_with_sections] to [true]. + In the example above, this would compute a new event name of the form "foo.bar.inject". + There is one [declare_n] function for each number [n] of parameters. For instance, the above example uses [declare_2] because it has two parameters: [level] and [hash]. @@ -276,6 +281,7 @@ module Simple : sig val declare_0 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -286,6 +292,7 @@ module Simple : sig val declare_1 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -297,6 +304,7 @@ module Simple : sig val declare_2 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -310,6 +318,7 @@ module Simple : sig val declare_3 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -325,6 +334,7 @@ module Simple : sig val declare_4 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -342,6 +352,7 @@ module Simple : sig val declare_5 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -361,6 +372,7 @@ module Simple : sig val declare_6 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -382,6 +394,7 @@ module Simple : sig val declare_7 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> @@ -405,6 +418,7 @@ module Simple : sig val declare_8 : ?alternative_color:alternative_color -> ?section:string list -> + ?prefix_name_with_section:bool -> name:string -> msg:string -> ?level:level -> -- GitLab