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) () =
31 print_endline (sprintf "Logger started with level %s" (string_of_priority level))
32 val level_no = int_of_priority level
33 val mutable enabled = false
34 method enable = enabled <- true
35 method disable = enabled <- false
36 method log (prio: priority) msg =
37 if enabled && (int_of_priority prio <= level_no) then
38 prerr_endline (sprintf ("%s: %s") (string_of_priority prio) msg)
41 class processingLogger =
42 let html_escape s = (* TODO too naive, use Nethtml.encode instead *)
43 Pcre.replace ~pat:"<" ~templ:"<"
44 (Pcre.replace ~pat:">" ~templ:">"
45 (Pcre.replace ~pat:"&" ~templ:"&" s))
49 val mutable log_lines: string list = []
50 method log msg = log_lines <- msg :: log_lines
51 method asText = String.concat "\n" (List.rev log_lines)
54 "<html><body>\n%s\n</body></html>"
57 (List.map html_escape (List.rev log_lines)))