X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Flogger.ml;fp=src%2Flogger.ml;h=a2063829ba9f75d670aefd7effbea37b7898c872;hb=7c4c61cec6fe1ae3a1b83a59b17ce90adcfe9b0b;hp=0000000000000000000000000000000000000000;hpb=5db22d04b3c81471dd521537a819da9ce541a171;p=SXSI%2Fxpathcomp.git diff --git a/src/logger.ml b/src/logger.ml new file mode 100644 index 0000000..a206382 --- /dev/null +++ b/src/logger.ml @@ -0,0 +1,25 @@ +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 active_loggers : (t, int) Hashtbl.t = Hashtbl.create 17 + +let available () = loggers + +let is_logger s = List.mem s loggers +let level s = try Hashtbl.find active_loggers s with Not_found -> 0 +let is_active s = Hashtbl.mem active_loggers s +let activate s lvl = if not (is_active s) then Hashtbl.add active_loggers s lvl +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 = + if l <= level t + then begin + fprintf !logger_output "%s: " t; + fprintf !logger_output "%s%!" s + end