Source file trace_fuchsia.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
open Common_

type output =
  [ `Stdout
  | `Stderr
  | `File of string
  ]

let collector = Fcollector.create

let setup ?(out = `Env) () =
  match out with
  | `Stderr -> Trace_core.setup_collector @@ Fcollector.create ~out:`Stderr ()
  | `Stdout -> Trace_core.setup_collector @@ Fcollector.create ~out:`Stdout ()
  | `File path ->
    Trace_core.setup_collector @@ Fcollector.create ~out:(`File path) ()
  | `Env ->
    (match Sys.getenv_opt "TRACE" with
    | Some ("1" | "true") ->
      let path = "trace.fxt" in
      let c = Fcollector.create ~out:(`File path) () in
      Trace_core.setup_collector c
    | Some "stdout" ->
      Trace_core.setup_collector @@ Fcollector.create ~out:`Stdout ()
    | Some "stderr" ->
      Trace_core.setup_collector @@ Fcollector.create ~out:`Stderr ()
    | Some path ->
      let c = Fcollector.create ~out:(`File path) () in
      Trace_core.setup_collector c
    | None -> ())

let with_setup ?out () f =
  setup ?out ();
  Fun.protect ~finally:Trace_core.shutdown f

module Internal_ = struct
  let on_tracing_error = on_tracing_error
end