Created
October 3, 2025 20:45
-
-
Save Nymphium/6317aa5746eb884343f74654e583c4a8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| let reporter ~env ~sw = | |
| let stdout = Eio.Stdenv.stdout env in | |
| let report (type a b) _src _level ~over (k : unit -> b) (msgf : (a, b) Logs.msgf) : b = | |
| let res = Atomic.make None in | |
| let k () = | |
| match Atomic.get res with | |
| | Some v -> v | |
| | None -> | |
| let v = k () in | |
| Atomic.set res (Some v); | |
| v | |
| in | |
| let () = | |
| Eio.Fiber.fork ~sw @@ fun () -> | |
| Eio.Buf_write.with_flow ~initial_size:512 stdout @@ fun v -> | |
| ignore | |
| @@ msgf | |
| @@ fun ?header ?tags fmt -> | |
| let f = Eio.Buf_write.make_formatter v in | |
| ignore header; | |
| ignore tags; | |
| Format.kfprintf (fun f -> Format.pp_print_flush f () |> over |> k) f fmt | |
| in | |
| k () | |
| in | |
| { Logs.report } | |
| ;; | |
| let () = | |
| Eio_main.run @@ fun env -> | |
| Eio.Switch.run @@ fun sw -> | |
| let clock = Eio.Stdenv.clock env in | |
| Logs.set_reporter @@ reporter ~env ~sw; | |
| Logs.err (fun m -> | |
| Eio.Time.sleep clock 2.; | |
| m "hello"); | |
| Logs.err (fun m -> | |
| Eio.Time.sleep clock 0.01; | |
| m "world") | |
| ;; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment