summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/logging/config.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/Lib/logging/config.py b/Lib/logging/config.py
index 37d8775..5adfe4d 100644
--- a/Lib/logging/config.py
+++ b/Lib/logging/config.py
@@ -86,6 +86,21 @@ def fileConfig(fname, defaults=None):
logging._releaseLock()
+def _resolve(name):
+ """Resolve a dotted name to a global object."""
+ name = string.split(name, '.')
+ used = name.pop(0)
+ found = __import__(used)
+ for n in name:
+ used = used + '.' + n
+ try:
+ found = getattr(found, n)
+ except AttributeError:
+ __import__(used)
+ found = getattr(found, n)
+ return found
+
+
def _create_formatters(cp):
"""Create and return formatters"""
flist = cp.get("formatters", "keys")
@@ -104,7 +119,12 @@ def _create_formatters(cp):
dfs = cp.get(sectname, "datefmt", 1)
else:
dfs = None
- f = logging.Formatter(fs, dfs)
+ c = logging.Formatter
+ if "class" in opts:
+ class_name = cp.get(sectname, "class")
+ if class_name:
+ c = _resolve(class_name)
+ f = c(fs, dfs)
formatters[form] = f
return formatters