diff options
author | Marko Kreen | 2011-11-24 09:08:54 +0000 |
---|---|---|
committer | Marko Kreen | 2011-11-24 09:08:54 +0000 |
commit | 4e8759a171a2caed8986bc7254a12e7cf12c5a90 (patch) | |
tree | 0f59dff2822a3d2c6302bb0951e7eab8d29bee38 /python/skytools/scripting.py | |
parent | e3d30c9ed4d018dc3e2d6d1e34dca65649a16de0 (diff) |
skytools.scripting: fix fileConfig on python 2.5
There is no disable_existing_loggers argument so
we need manually enable all loggers again.
Diffstat (limited to 'python/skytools/scripting.py')
-rw-r--r-- | python/skytools/scripting.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/python/skytools/scripting.py b/python/skytools/scripting.py index 48672620..cd79bf2d 100644 --- a/python/skytools/scripting.py +++ b/python/skytools/scripting.py @@ -121,6 +121,21 @@ def run_single_process(runnable, daemon, pidfile): _log_config_done = 0 _log_init_done = {} +def _load_log_config(fn, defs): + """Fixed fileConfig.""" + + # Work around fileConfig default behaviour to disable + # not only old handlers on load (which slightly makes sense) + # but also old logger objects (which does not make sense). + + if sys.hexversion >= 0x2060000: + logging.config.fileConfig(fn, defs, False) + else: + logging.config.fileConfig(fn, defs) + root = logging.getLogger() + for lg in root.manager.loggerDict.values(): + lg.disabled = 0 + def _init_log(job_name, service_name, cf, log_level, is_daemon): """Logging setup happens here.""" global _log_init_done, _log_config_done @@ -147,7 +162,7 @@ def _init_log(job_name, service_name, cf, log_level, is_daemon): fn = os.path.expanduser(fn) if os.path.isfile(fn): defs = {'job_name': job_name, 'service_name': service_name} - logging.config.fileConfig(fn, defs, False) + _load_log_config(fn, defs) got_skylog = 1 break _log_config_done = 1 |