]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/uwobo/src/ocaml/uwobo_logger.ml
Initial revision
[helm.git] / helm / uwobo / src / ocaml / uwobo_logger.ml
index b7e4239a6c03df29b83160e38f2b7dfd2fa1de55..c2f69eecc80213b415b572450854d297c9c9e472 100644 (file)
@@ -1,4 +1,29 @@
 
+(* Copyright (C) 2002, HELM Team.
+ * 
+ * This file is part of HELM, an Hypertextual, Electronic
+ * Library of Mathematics, developed at the Computer Science
+ * Department, University of Bologna, Italy.
+ * 
+ * HELM is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * HELM is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HELM; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * For details, see the HELM World-Wide-Web page,
+ * http://cs.unibo.it/helm/.
+ *)
+
 open Printf;;
 
 type priority = [ 
@@ -26,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
@@ -54,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