[prev in list] [next in list] [prev in thread] [next in thread] 

List:       zodb-checkins
Subject:    [Zodb-checkins] CVS: Zope/lib/python/ZConfig/components/logger -
From:       "Fred L. Drake\, Jr." <fred () zope ! com>
Date:       2004-04-22 20:20:42
Message-ID: 200404222020.i3MKKgu5028430 () cvs ! zope ! org
[Download RAW message or body]

Update of /cvs-repository/Zope/lib/python/ZConfig/components/logger
In directory cvs.zope.org:/tmp/cvs-serv28349/lib/python/ZConfig/components/logger

Modified Files:
	loghandler.py 
Log Message:
cleanly separate the debug logging handler from the startup logging handler;
these must be controllable separately


=== Zope/lib/python/ZConfig/components/logger/loghandler.py 1.2 => 1.3 ===
--- Zope/lib/python/ZConfig/components/logger/loghandler.py:1.2	Tue Apr 13 13:05:52 2004
+++ Zope/lib/python/ZConfig/components/logger/loghandler.py	Thu Apr 22 16:20:11 2004
@@ -17,7 +17,7 @@
 import sys
 
 from logging import Handler, StreamHandler
-from logging.handlers import SysLogHandler
+from logging.handlers import SysLogHandler, BufferingHandler
 from logging.handlers import HTTPHandler, SMTPHandler
 from logging.handlers import NTEventLogHandler as Win32EventLogHandler
 
@@ -53,32 +53,19 @@
         pass
 
 
-class StartupHandler(Handler):
-    """
-    A handler which outputs messages to a stream but also buffers them until
-    they can be flushed to a target handler.  Useful at startup before we can
-    know that we can safely write to a config-specified handler.
+class StartupHandler(BufferingHandler):
+    """Handler which stores messages in a buffer until later.
+
+    This is useful at startup before we can know that we can safely
+    write to a configuration-specified handler.
     """
-    def __init__(self, stream=None):
-        Handler.__init__(self)
-        if not stream:
-            stream = sys.stderr
-        self.stream = stream
-        self.buffer = []
 
-    def emit(self, record):
-        try:
-            self.buffer.append(record)
-            msg = self.format(record)
-            self.stream.write("%s\n" % msg)
-            self.flush()
-        except:
-            self.handleError(record)
+    def __init__(self):
+        BufferingHandler.__init__(self, sys.maxint)
 
-    def flush(self):
-        self.stream.flush()
+    def shouldFlush(self, record):
+        return False
 
     def flushBufferTo(self, target):
-        for record in self.buffer:
-            target.handle(record)
-        self.buffer = []
+        while self.buffer:
+            target.handle(self.buffer.pop(0))


_______________________________________________
Zodb-checkins mailing list
Zodb-checkins@zope.org
http://mail.zope.org/mailman/listinfo/zodb-checkins
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic