Change the logging infrastructure:
[SXSI/xpathcomp.git] / src / logger.ml
index a206382..1b123f1 100644 (file)
@@ -5,7 +5,7 @@ type level = int
 
 let loggers = [ "top-down-run"; "top-down-approx"; "result-set"; "level2-jit"; "res-jit"; "grammar"; "twopass";"transition" ]
 let active_loggers : (t, int) Hashtbl.t = Hashtbl.create 17
-
+let margin = List.fold_left (fun m l -> max m (String.length l)) 0 loggers
 let available () = loggers
 
 let is_logger s = List.mem s loggers
@@ -17,9 +17,22 @@ let deactivate s = Hashtbl.remove active_loggers s
 let logger_output = ref err_formatter
 let set_output f = logger_output := f
 
-let log t l s =
+let log t l fmt =
   if l <= level t
   then begin
-    fprintf !logger_output "%s: " t;
-    fprintf !logger_output "%s%!" s
+    pp_open_hovbox !logger_output (margin + 3);
+    fprintf !logger_output "%-.*s : " margin t;
+    kfprintf (fun _ ->
+      pp_close_box !logger_output ();
+      fprintf !logger_output "@?@\n";
+    ) !logger_output fmt
   end
+  else
+    ifprintf !logger_output fmt
+
+let print ppf fmt =
+  pp_open_hovbox ppf 0;
+  kfprintf (fun _ ->
+    pp_close_box ppf ();
+    fprintf ppf "@?")
+    ppf fmt