use at_exit in trace_tef/tldrs

This commit is contained in:
Simon Cruanes 2025-09-15 09:10:28 -04:00
parent a81785f8c0
commit 0c275b3aab
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 22 additions and 0 deletions

View file

@ -120,11 +120,22 @@ let collector ~out () : collector =
| None -> assert false | None -> assert false
| Some c -> subscriber_ c |> Trace_subscriber.collector | Some c -> subscriber_ c |> Trace_subscriber.collector
open struct
let register_atexit =
let has_registered = ref false in
fun () ->
if not !has_registered then (
has_registered := true;
at_exit Trace_core.shutdown
)
end
let setup ?(out = `Env) () = let setup ?(out = `Env) () =
let role = find_role ~out () in let role = find_role ~out () in
match role with match role with
| None -> () | None -> ()
| Some c -> | Some c ->
register_atexit ();
Trace_core.setup_collector @@ Trace_subscriber.collector @@ subscriber_ c Trace_core.setup_collector @@ Trace_subscriber.collector @@ subscriber_ c
let with_setup ?out () f = let with_setup ?out () f =

View file

@ -78,7 +78,18 @@ let[@inline] subscriber ~out () : Trace_subscriber.t =
let[@inline] collector ~out () : collector = let[@inline] collector ~out () : collector =
collector_ ~finally:ignore ~mode:`Single ~out () collector_ ~finally:ignore ~mode:`Single ~out ()
open struct
let register_atexit =
let has_registered = ref false in
fun () ->
if not !has_registered then (
has_registered := true;
at_exit Trace_core.shutdown
)
end
let setup ?(out = `Env) () = let setup ?(out = `Env) () =
register_atexit ();
match out with match out with
| `Stderr -> Trace_core.setup_collector @@ collector ~out:`Stderr () | `Stderr -> Trace_core.setup_collector @@ collector ~out:`Stderr ()
| `Stdout -> Trace_core.setup_collector @@ collector ~out:`Stdout () | `Stdout -> Trace_core.setup_collector @@ collector ~out:`Stdout ()