Added the ability to specify a class attribute in Formatter configuration. Contributed by Shane Hathaway.

This commit is contained in:
Vinay Sajip 2006-01-20 18:28:03 +00:00
parent 81cdb4ebe1
commit 7a7160bd0c
1 changed files with 21 additions and 1 deletions

View File

@ -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