[Checkins] SVN: grokproject/trunk/grokproject/utils.py Avoid doubled lines in buildout output.

Uli Fouquet uli at gnufix.de
Sun Sep 21 20:16:06 EDT 2008


Log message for revision 91299:
  Avoid doubled lines in buildout output.

Changed:
  U   grokproject/trunk/grokproject/utils.py

-=-
Modified: grokproject/trunk/grokproject/utils.py
===================================================================
--- grokproject/trunk/grokproject/utils.py	2008-09-21 23:49:53 UTC (rev 91298)
+++ grokproject/trunk/grokproject/utils.py	2008-09-22 00:16:05 UTC (rev 91299)
@@ -3,6 +3,7 @@
 import shutil
 import tempfile
 import pkg_resources
+import logging
 from paste.script.templates import var
 
 HOME = os.path.expanduser('~')
@@ -112,6 +113,7 @@
 
         import zc.buildout.buildout
         zc.buildout.buildout.main(extra_args + ['bootstrap'])
+        remove_old_logger_handlers()
         shutil.rmtree(tmpdir)
     else:
         zc.buildout.buildout.main(extra_args + ['bootstrap'])
@@ -121,12 +123,26 @@
     # First we install eggbasket.  This is also done in the
     # bootstrap.py, but that is not actually called by the bootstrap
     # lines above...
-    zc.buildout.buildout.main(['install', 'eggbasket'])
+    zc.buildout.buildout.main(['install', 'eggbasket'])    
+    remove_old_logger_handlers()
 
     # The rest of the install can be a bit quieter.
     zc.buildout.buildout.main(['-q', 'install'])
+    remove_old_logger_handlers()
 
 
+def remove_old_logger_handlers():
+    # zc.buildout installs a new log stream on every call of
+    # main(). We remove any leftover handlers to avoid multiple output
+    # of same content (doubled lines etc.)
+    root_logger = logging.getLogger()
+    if 'zc.buildout' in root_logger.manager.loggerDict.keys():
+        logger = logging.getLogger('zc.buildout')
+        for handler in logger.handlers:
+            logger.removeHandler(handler)
+    return
+
+
 def required_grok_version(versionfile):
     for line in versionfile.split('\n'):
         if line.startswith('grok ='):



More information about the Checkins mailing list