]> git.llucax.com Git - software/pymin.git/blobdiff - pymind
Improve and document UpOneOf validator (refs #20)
[software/pymin.git] / pymind
diff --git a/pymind b/pymind
index da7b2188e08f710026ef6a58aebdc87eeb1eb060..78939f0b3e0d8807f9ec7d6bd865691b505d6c86 100755 (executable)
--- a/pymind
+++ b/pymind
@@ -1,15 +1,21 @@
 #!/usr/bin/env python
 # vim: set encoding=utf-8 et sw=4 sts=4 :
 
-import logging, logging.config ; log = logging.getLogger('pymind')
-# default logging configuration
-# (this is used before the user configuration file gets parsed)
-logging.basicConfig(format='%(levelname)s: %(message)s')
-
 import os
 import sys
 from formencode import Invalid, validators as V
 
+import logging, logging.config ; log = logging.getLogger('pymind')
+# default logging configuration
+# (this is used before the user configuration file gets parsed)
+try:
+    # first we try to load a log config file
+    default = '/etc/pymin/log.init.ini'
+    logging.config.fileConfig(os.getenv('PYMIND_LOGINITCONF', default))
+except:
+    # then we try to load a reasonable default
+    logging.basicConfig(format='%(levelname)s: %(message)s')
+
 from pymin.config import OptionGroup, Option, ConfigOption, ListOption
 from pymin.config import load_config, options
 from pymin.config import ConfigError, MissingSectionHeaderError, ParsingError
@@ -133,6 +139,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 +157,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():