From 7a7160bd0c6b43b2b0705f43a32a4a7fae2127cd Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Fri, 20 Jan 2006 18:28:03 +0000 Subject: Added the ability to specify a class attribute in Formatter configuration. Contributed by Shane Hathaway. --- Lib/logging/config.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) 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 -- cgit v0.12