summaryrefslogtreecommitdiff
path: root/Mailman/Logging/MultiLogger.py
diff options
context:
space:
mode:
authorbwarsaw1998-07-02 19:33:22 +0000
committerbwarsaw1998-07-02 19:33:22 +0000
commit91d9c5c5171c26bef1e07f3086888aed02d0db6f (patch)
tree6eb99909c3bca3b319d5e06450dac7439d9984de /Mailman/Logging/MultiLogger.py
parente347c2006bc969d1b3cade65f22ba2191a298f91 (diff)
downloadmailman-91d9c5c5171c26bef1e07f3086888aed02d0db6f.tar.gz
mailman-91d9c5c5171c26bef1e07f3086888aed02d0db6f.tar.zst
mailman-91d9c5c5171c26bef1e07f3086888aed02d0db6f.zip
Subpackage containing all logging classes.
StampedLogger is carried over from before, with some changes. Logger used to be in Mailman.Utils MultiLogger is new, it is used to log identical message to a list of loggers supporting the write interface of file-like objects (e.g. a Logger or sys.__stdout__).
Diffstat (limited to 'Mailman/Logging/MultiLogger.py')
-rw-r--r--Mailman/Logging/MultiLogger.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/Mailman/Logging/MultiLogger.py b/Mailman/Logging/MultiLogger.py
new file mode 100644
index 000000000..728c5c7de
--- /dev/null
+++ b/Mailman/Logging/MultiLogger.py
@@ -0,0 +1,69 @@
+# Copyright (C) 1998 by the Free Software Foundation, Inc.
+#
+# This program 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.
+#
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+"""A mutiple sink logger. Any message written goes to all sub-loggers."""
+
+import sys
+from Mailman.Logging.Utils import __logexc
+
+
+
+class MultiLogger:
+ def __init__(self, *args):
+ self.__loggers = []
+ for logger in args:
+ self.__loggers.append(logger)
+
+ def add_logger(self, logger):
+ if logger not in self.__loggers:
+ self.__loggers.append(logger)
+
+ def del_logger(self, logger):
+ if logger in self.__loggers:
+ self.__loggers.remove(logger)
+
+ def write(self, msg):
+ for logger in self.__loggers:
+ # you want to be sure that a bug in one logger doesn't prevent
+ # logging to all the other loggers
+ try:
+ logger.write(msg)
+ except:
+ __logexc(logger, msg)
+
+ def writelines(self, lines):
+ for line in lines:
+ self.write(line)
+
+ def flush(self):
+ for logger in self.__loggers:
+ if hasattr(logger, 'flush'):
+ # you want to be sure that a bug in one logger doesn't prevent
+ # logging to all the other loggers
+ try:
+ logger.flush()
+ except:
+ __logexc(logger)
+
+ def close(self):
+ for logger in self.__loggers:
+ # you want to be sure that a bug in one logger doesn't prevent
+ # logging to all the other loggers
+ try:
+ if logger <> sys.__stderr__ and logger <> sys.__stdout__:
+ logger.close()
+ except:
+ __logexc(logger)