From 3dc82c4e76f9059f10e8223b7423cf27faf1ce39 Mon Sep 17 00:00:00 2001 From: funwithcthulhu <29905917+funwithcthulhu@users.noreply.github.com> Date: Thu, 21 May 2026 20:14:12 -0700 Subject: [PATCH] Let default debug logs follow initialized level --- src/server/log.ml | 20 +++++++++++--------- test/unit/log.ml | 24 ++++++++++++++++++++++++ test/unit/unit.ml | 1 + 3 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 test/unit/log.ml diff --git a/src/server/log.ml b/src/server/log.ml index 99311e11..6e987735 100644 --- a/src/server/log.ml +++ b/src/server/log.ml @@ -329,20 +329,22 @@ let sub_log ?level:level_ name = log ~tags format_and_arguments)) in - let level = - List.find Option.is_some [ - Option.map to_logs_level level_; - List.assoc_opt name !custom_log_levels; - Some !level - ] in + let source_level = + match level_ with + | Some level -> + let level = to_logs_level level in + custom_log_levels := + (name, level)::(List.remove_assoc name !custom_log_levels); + Some level + | None -> + List.assoc_opt name !custom_log_levels + in (* Create the actual Logs source, and then wrap all the interesting functions. *) let src = Logs.Src.create name in let (module Log) = Logs.src_log src in - Logs.Src.set_level src level; - custom_log_levels := - (name, Option.get level)::(List.remove_assoc name !custom_log_levels); + Logs.Src.set_level src source_level; sources := (name, src) :: (List.remove_assoc name !sources); { diff --git a/test/unit/log.ml b/test/unit/log.ml new file mode 100644 index 00000000..a11ab885 --- /dev/null +++ b/test/unit/log.ml @@ -0,0 +1,24 @@ +(* This file is part of Dream, released under the MIT license. See LICENSE.md + for details, or visit https://github.com/camlworks/dream. + + Copyright 2026 funwithcthulhu *) + + + +let (-:) name f = Alcotest.test_case name `Quick f + + + +let tests = "log", [ + + "default debug follows initialized level" -: begin fun () -> + let called = ref false in + Dream.initialize_log ~level:`Debug (); + Dream.debug (fun log -> + called := true; + log "debug"); + !called + |> Alcotest.(check bool) "called" true + end; + +] diff --git a/test/unit/unit.ml b/test/unit/unit.ml index 0f273874..500cdbcf 100644 --- a/test/unit/unit.ml +++ b/test/unit/unit.ml @@ -9,4 +9,5 @@ let () = Alcotest.run "Dream" [ Request.tests; Headers.tests; + Log.tests; ]