From 48f761d2105a78b261dab3492335a5ac6588eb56 Mon Sep 17 00:00:00 2001 From: xenia Date: Tue, 23 Apr 2024 03:43:55 -0400 Subject: [PATCH] make post-init Xlog.logs work --- README.md | 20 ++++++++++++++++++++ lib/xlog.ml | 6 +++--- test/test_xlog.ml | 27 +++++++++++++++++++++------ 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 059b9bd..d01cbc3 100644 --- a/README.md +++ b/README.md @@ -46,3 +46,23 @@ else Xlog.init_pretty_writer stdout ~min_level:Xlog.DEBUG ``` + +## usage with ppx + +```ocaml +[%%xlog_import] + +[%xlog info "log message %d" 1337] + +try + fallible_task () +with +| e -> [%xlog exn e "oop's"] + +module Submodule = struct + [%%xlog_import] + + let do_stuff () = + [%xlog warn "meow"] +end +``` diff --git a/lib/xlog.ml b/lib/xlog.ml index cdaa53c..d720610 100644 --- a/lib/xlog.ml +++ b/lib/xlog.ml @@ -12,7 +12,7 @@ type logger = { let rec root_logger = { namespace = ""; pnamespace = []; - min_level = 0; + min_level = Int.max_int; child = root_logger; sibling = root_logger; writers = None; @@ -31,10 +31,10 @@ let make_logger parent_logger ns = let rec logger = { namespace = String.concat "." (List.rev pnamespace); pnamespace = pnamespace; - min_level = Int.max_int; + min_level = parent_logger.min_level; child = logger; sibling = parent_logger.child; - writers = None; + writers = parent_logger.writers; } in parent_logger.child <- logger; logger diff --git a/test/test_xlog.ml b/test/test_xlog.ml index 3ea0f34..b264865 100644 --- a/test/test_xlog.ml +++ b/test/test_xlog.ml @@ -1,13 +1,28 @@ [%%xlog_import] -let () = - Xlog.init_pretty_writer stdout ~min_level:Xlog.DEBUG +module Submodule = struct + [%%xlog_import] + + let do_stuff () = + [%xlog warn "meow"] +end let () = - [%xlog info "meow meow %s %d" "test string" 1337] - -let () = - try + Xlog.init_pretty_writer stdout ~min_level:Xlog.DEBUG; + [%xlog info "meow meow %s %d" "test string" 1337]; + begin try failwith "meow2" with | e -> [%xlog exn e "oop's %d" 42069] + end; + [%xlog info "awa"]; + Submodule.do_stuff () + +module Submodule2 = struct + [%%xlog_import] + + let do_stuff () = + [%xlog warn "meow"] +end + +let () = Submodule2.do_stuff ()