summaryrefslogtreecommitdiff
path: root/python/skytools/scripting.py
diff options
context:
space:
mode:
authorMarko Kreen2011-11-24 09:08:54 +0000
committerMarko Kreen2011-11-24 09:08:54 +0000
commit4e8759a171a2caed8986bc7254a12e7cf12c5a90 (patch)
tree0f59dff2822a3d2c6302bb0951e7eab8d29bee38 /python/skytools/scripting.py
parente3d30c9ed4d018dc3e2d6d1e34dca65649a16de0 (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.py17
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