]> git.llucax.com Git - software/pymin.git/commitdiff
Hack to overcome Python's bug 3136 in logging system (refs #7).
authorLeandro Lucarella <llucax@gmail.com>
Thu, 19 Jun 2008 01:17:42 +0000 (22:17 -0300)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 19 Jun 2008 03:33:25 +0000 (00:33 -0300)
logging.config.fileConfig() disables all existing loggers that are not
configured using the config file. This hack re-enable the loggers so
everything works as expected even when you don't specify *all* the loggers
in the configuration files (and child loggers really inherits their parent
configuration).

pymind

diff --git a/pymind b/pymind
index da7b2188e08f710026ef6a58aebdc87eeb1eb060..fa4fa36f5c9d5b537704bec3c1b996d8d35bab3e 100755 (executable)
--- a/pymind
+++ b/pymind
@@ -133,6 +133,12 @@ def build_root(config, args, services):
 
 
 def setup_logging(config_files):
+    # XXX: this is a hack for re-enabling loggers not configured via
+    #      fileConfig(). This function disable all existing loggers that
+    #      has no configuration specified in the config file, so we have
+    #      to re-enable the by hand.
+    #      See Python bug 3136: http://bugs.python.org/issue3136
+    existing = logging.root.manager.loggerDict.keys()
     loaded_files = 0
     for f in config_files:
         try:
@@ -145,6 +151,9 @@ def setup_logging(config_files):
         loaded_files += 1
     if not loaded_files:
         log.warning('no log config file loaded')
+    # XXX: finish the hack commented above
+    for log in existing:
+        logging.root.manager.loggerDict[log].disabled = 0
 
 
 def main():