Issue 2473: logging.LogRecord should know how to handle dict-like args (original) (raw)
In (at least) Python 2.5.2, logging.logRecord provides a very useful facility to interpolate formatted strings. This feature expands an *args sequence; if that sequence has only one element and that element is a dictionary, LogRecord uses the dictionary to interpolate keyword formatted strings. This is incredibly useful, but the LogRecord init() method includes a rather arbitrary type-specific check that prevents users from passing dict-like objects to the log methods:
logging.init.py:204..238 class LogRecord: [...] def init(self, name, level, pathname, lineno, msg, args, exc_info, func=None): [...] if args and (len(args) == 1) and args[0] and (type(args[0]) == types.DictType): args = args[0]
This restriction prevents the user from passing eg a subclass of UserDict.DictMixin. Now, init() clearly does need to do some checking of args, but it would be nice if that checking accepted dict-like objects. I haven't come up with a good way to do this myself yet, but I figured I'd submit the request now.
Thanks!