X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Flogger.ml;h=e99fd1f73d7bb5b863195f0736cff7a7b0c3bc86;hb=cb728132e1c5cb0a171ee09e9b3ced16da08f796;hp=a2063829ba9f75d670aefd7effbea37b7898c872;hpb=7c4c61cec6fe1ae3a1b83a59b17ce90adcfe9b0b;p=SXSI%2Fxpathcomp.git diff --git a/src/logger.ml b/src/logger.ml index a206382..e99fd1f 100644 --- a/src/logger.ml +++ b/src/logger.ml @@ -3,9 +3,18 @@ open Format type t = string type level = int -let loggers = [ "top-down-run"; "top-down-approx"; "result-set"; "level2-jit"; "res-jit"; "grammar"; "twopass";"transition" ] +let loggers = [ "parsing"; + "indexing"; + "top-down-run"; + "top-down-approx"; + "result-set"; + "level2-jit"; + "res-jit"; + "twopass"; + "transition"; + "bottom-up" ] 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 +26,32 @@ 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 = + kfprintf (fun _ -> + fprintf ppf "@?") + ppf fmt + +let _verbose = ref false +let set_verbose b = _verbose := b +let verbose ppf fmt = + if !_verbose then begin + kfprintf (fun _ -> + fprintf ppf "@?") + ppf fmt + end else + ikfprintf (fun _ -> + fprintf ppf "@?") + ppf fmt