diff options
| -rw-r--r-- | Lib/logging/config.py | 22 | 
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  | 
