From 687cbab38e29872274431145d61637da4f672065 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Fri, 17 Jan 2003 15:14:53 +0000 Subject: [PATCH] - generalized sysLogger class so that it logs to a generic output channel, now it can be used to log also to files, sockets, ... - better pretty printing of debugging messages: timestamps added - fixed copyright notice --- helm/uwobo/src/ocaml/uwobo_logger.ml | 69 ++++++++++++++------------- helm/uwobo/src/ocaml/uwobo_logger.mli | 58 ++++++++++++---------- 2 files changed, 68 insertions(+), 59 deletions(-) diff --git a/helm/uwobo/src/ocaml/uwobo_logger.ml b/helm/uwobo/src/ocaml/uwobo_logger.ml index 3a197041c..bbd7e03f1 100644 --- a/helm/uwobo/src/ocaml/uwobo_logger.ml +++ b/helm/uwobo/src/ocaml/uwobo_logger.ml @@ -1,27 +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. +(* + * Copyright (C) 2003: + * Stefano Zacchiroli + * for the HELM Team http://helm.cs.unibo.it/ + * + * 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. * - * 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/. + * For details, see the HELM World-Wide-Web page, + * http://helm.cs.unibo.it/ *) open Printf;; @@ -50,22 +52,23 @@ let string_of_priority = function | `Info -> "INFO" | `Debug -> "DEBUG" -class sysLogger ?(level: priority = `Notice) () = +class sysLogger ?(level: priority = `Notice) ?(outchan = stderr) () = 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 level = level method levelNo = level_no - method enable = self#doCritical (lazy (enabled <- true)) - method disable = self#doCritical (lazy (enabled <- false)) + method enable = enabled <- true + method disable = enabled <- false method log (prio: priority) msg = - self#doCritical (lazy ( - if enabled && (int_of_priority prio <= level_no) then - prerr_endline (sprintf ("[UWOBO] %s: %s") (string_of_priority prio) msg) - )) + let tm = Unix.localtime (Unix.time ()) in + if enabled && (int_of_priority prio <= level_no) then begin + fprintf outchan ("[UWOBO %02d/%02d/%4d %02d:%02d:%02d] %s: %s\n") + tm.Unix.tm_mday (tm.Unix.tm_mon + 1) (tm.Unix.tm_year + 1900) + tm.Unix.tm_hour tm.Unix.tm_min tm.Unix.tm_sec + (string_of_priority prio) msg; + flush outchan + end end (** non thread safe, a processingLogger is usually instantied locally for each diff --git a/helm/uwobo/src/ocaml/uwobo_logger.mli b/helm/uwobo/src/ocaml/uwobo_logger.mli index a250f655d..b05cdda08 100644 --- a/helm/uwobo/src/ocaml/uwobo_logger.mli +++ b/helm/uwobo/src/ocaml/uwobo_logger.mli @@ -1,27 +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. +(* + * Copyright (C) 2003: + * Stefano Zacchiroli + * for the HELM Team http://helm.cs.unibo.it/ + * + * 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. * - * 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/. + * For details, see the HELM World-Wide-Web page, + * http://helm.cs.unibo.it/ *) type priority = [ @@ -35,10 +37,14 @@ type priority = [ | `Debug (* debug-level message *) ] - (** @param level minimum level of priority that will be reported, msg with - priority less than this will be ignored *) + (** + Warning: logging is disabled by default, you have to invoke #enable method + before being able to log anything. + @param level minimum level of priority that will be reported, msg with + priority less than this will be ignored + @param outchan output channel on which output log messages *) class sysLogger: - ?level: priority -> + ?level: priority -> ?outchan: out_channel -> unit -> object method level: priority -- 2.39.2