]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/uwobo/src/ocaml/uwobo_logger.ml
- shows also version in usage string
[helm.git] / helm / uwobo / src / ocaml / uwobo_logger.ml
index 2907b0726df0058b15d828a720e51112d6e7c6ec..c2f69eecc80213b415b572450854d297c9c9e472 100644 (file)
@@ -51,25 +51,24 @@ let string_of_priority = function
   | `Debug    -> "DEBUG"
 
 class sysLogger ?(level: priority = `Notice) () =
-  object
+  object (self)
+    inherit Uwobo_common.threadSafe
     initializer
       print_endline (sprintf "Logger started with level %s" (string_of_priority level))
     val level_no = int_of_priority level
     val mutable enabled = false
-    method enable = enabled <- true
-    method disable = enabled <- false
+    method enable = self#doCritical (lazy (enabled <- true))
+    method disable = self#doCritical (lazy (enabled <- false))
     method log (prio: priority) msg =
-      if enabled && (int_of_priority prio <= level_no) then
-        prerr_endline (sprintf ("%s: %s") (string_of_priority prio) msg)
+      self#doCritical (lazy (
+        if enabled && (int_of_priority prio <= level_no) then
+          prerr_endline (sprintf ("%s: %s") (string_of_priority prio) msg)
+      ))
   end
 
-class processingLogger =
-  let html_escape s = (* TODO too naive, use Nethtml.encode instead *)
-    Pcre.replace ~pat:"<" ~templ:"&lt;"
-      (Pcre.replace ~pat:">" ~templ:"&gt;"
-        (Pcre.replace ~pat:"&" ~templ:"&amp;" s))
-  in
-  fun () ->
+  (** non thread safe, a processingLogger is usually instantied locally for each
+  thread *)
+class processingLogger () =
   object
     val mutable log_lines: string list = []
     method log msg = log_lines <- msg :: log_lines
@@ -79,6 +78,6 @@ class processingLogger =
         "<html><body>\n%s\n</body></html>"
         (String.concat
           "<br />\n"
-          (List.map html_escape (List.rev log_lines)))
+          (List.map (Netencoding.Url.encode ~plus:false) (List.rev log_lines)))
   end