Source file mirage_impl_reporter.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
39
open Functoria
module Key = Mirage_key
open Mirage_impl_pclock
open Mirage_impl_misc
type reporter = job
let reporter = job
let pp_level ppf = function
| Logs.Error -> Fmt.string ppf "Logs.Error"
| Logs.Warning -> Fmt.string ppf "Logs.Warning"
| Logs.Info -> Fmt.string ppf "Logs.Info"
| Logs.Debug -> Fmt.string ppf "Logs.Debug"
| Logs.App -> Fmt.string ppf "Logs.App"
let mirage_log ?ring_size ~default () =
let logs = Key.logs in
let packages = [ package ~min:"1.2.0" ~max:"2.0.0" "mirage-logs" ] in
let keys = [ Key.v logs ] in
let connect _ modname = function
| [ _pclock ] ->
Fmt.str
"@[<v 2>let ring_size = %a in@ let reporter = %s.create ?ring_size \
() in@ Mirage_runtime.set_level ~default:%a %a;@ %s.set_reporter \
reporter;@ Lwt.return reporter"
Fmt.(Dump.option int)
ring_size modname pp_level default pp_key logs modname
| _ -> failwith (connect_err "log" 1)
in
impl ~packages ~keys ~connect "Mirage_logs.Make" (pclock @-> reporter)
let default_reporter ?(clock = default_posix_clock) ?ring_size
?(level = Logs.Info) () =
mirage_log ?ring_size ~default:level () $ clock
let no_reporter =
let connect _ _ _ = "assert false" in
impl ~connect "Mirage_runtime" reporter