5 `Emerg | `Alert | `Crit | `Err | `Warning | `Notice | `Info | `Debug
8 let int_of_priority = function
18 let string_of_priority = function
19 | `Emerg -> "EMERGENCY"
23 | `Warning -> "WARNING"
28 class sysLogger ?(level: priority = `Notice) () =
30 val level_no = int_of_priority level
31 val mutable enabled = false
32 method enable = enabled <- true
33 method disable = enabled <- false
34 method log (prio: priority) msg =
35 if enabled && (int_of_priority prio < level_no) then
36 prerr_endline (sprintf ("%s: %s") (string_of_priority prio) msg)
39 class processingLogger =
40 let html_escape s = (* TODO too naive, use Nethtml.encode instead *)
41 Pcre.replace ~pat:"<" ~templ:"<"
42 (Pcre.replace ~pat:">" ~templ:">"
43 (Pcre.replace ~pat:"&" ~templ:"&" s))
47 val mutable log_lines: string list = []
48 method log msg = log_lines <- msg :: log_lines
49 method asText = String.concat "\n" (List.rev log_lines)
52 "<html><body>\n%s\n</body></html>"
55 (List.map html_escape (List.rev log_lines)))