]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/uwobo/src/ocaml/uwobo_logger.ml
snapshot Wed, 27 Nov 2002 14:47:14 +0100
[helm.git] / helm / uwobo / src / ocaml / uwobo_logger.ml
index 2907b0726df0058b15d828a720e51112d6e7c6ec..0a27ee2643bd036afd7e55235d0784f0092db783 100644 (file)
@@ -51,18 +51,23 @@ 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
 
+  (** non thread safe, a processingLogger is usually instantied locally for each
+  thread *)
 class processingLogger =
   let html_escape s = (* TODO too naive, use Nethtml.encode instead *)
     Pcre.replace ~pat:"<" ~templ:"&lt;"