[Extras-cauldron-commits] r38 - trunk/buildme/buildlib

ed_ at garage.maemo.org ed_ at garage.maemo.org
Sun May 18 22:07:01 EEST 2008


Author: ed_
Date: 2008-05-18 22:07:00 +0300 (Sun, 18 May 2008)
New Revision: 38

Modified:
   trunk/buildme/buildlib/logger.py
Log:
debugged logging subsystem

Modified: trunk/buildme/buildlib/logger.py
===================================================================
--- trunk/buildme/buildlib/logger.py	2008-05-18 14:23:44 UTC (rev 37)
+++ trunk/buildme/buildlib/logger.py	2008-05-18 19:07:00 UTC (rev 38)
@@ -47,12 +47,19 @@
         handler.setFormatter(self.formatter)
         logging.Logger.addHandler(self, handler)
 
-    def removeHandler(self, handler):
-        """ Flush before removing """
+    def removeHandler(self, handler, clean=False):
+        """ Flush before removing. Clean if needed """
         if handler:
             handler.flush()
             logging.Logger.removeHandler(self, handler)
 
+    def clean(self):
+        """ Clean all cleanable handlers """
+
+        for handler in self.handlers:
+            if hasattr(handler, 'clean') and callable(handler.clean):
+                handler.clean()
+
     def summary(self, msg, *args, **kwargs):
         """ Log 'msg % args' with severity 'SUMMARY'. """
 
@@ -67,16 +74,35 @@
         self.buffer = []
 
     def emit(self, record):
-        """ Append a record to the buffer """
+        """ Append a record to the buffer.
+            Skip duplicating records """
+
+        for item in self.buffer:
+            if record.getMessage() == item.getMessage():
+                return
+        
         self.buffer.append(record)
 
     def getSubject(self, record):
         """ Redefined method to get subject from subject object """
         return str(self.subject)
 
+    def format(self, record):
+        """ Format records from buffer. Called in SMTPHandler.emit """
+        result = ""
+        for record in self.buffer:
+            result = "%s\n%s" % (result, SMTPHandler.format(self, record))
+        return result
+
+    def clean(self):
+        """ Clean buffer """
+        self.buffer = []
+
     def flush(self):
-        """ Send buffer by email """
-        SMTPHandler.emit(self, buffer)
+        """ Send buffered records by email """
+        if self.buffer:
+            SMTPHandler.emit(self, self)
+            self.buffer = []
 
 def create_uploader_handler(logger, uploader, builder_email, subject):
     """ Create BuilderSMTPHandler for uploader """



More information about the Extras-cauldron-commits mailing list