From: Vinay Sajip Date: Fri, 20 Jan 2006 18:28:03 +0000 (+0000) Subject: Added the ability to specify a class attribute in Formatter configuration. Contribute... X-Git-Tag: v2.5a0~783 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7a7160bd0c6b43b2b0705f43a32a4a7fae2127cd;p=thirdparty%2FPython%2Fcpython.git Added the ability to specify a class attribute in Formatter configuration. Contributed by Shane Hathaway. --- diff --git a/Lib/logging/config.py b/Lib/logging/config.py index 37d87750c7dd..5adfe4dd21d8 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