def makeRecord(self, name, level, fn, lno, msg, args, exc_info,<EOL>func=None, extra=None, sinfo=None):
if name.startswith("<STR_LIT>"):<EOL><INDENT>rv = _LogRecord(name, level, fn, lno, msg, args, exc_info, func, sinfo)<EOL><DEDENT>else:<EOL><INDENT>rv = _CompatLogRecord(name, level, fn, lno, msg, args, exc_info, func, sinfo)<EOL><DEDENT>if extra is not None:<EOL><INDENT>for key in extra:<EOL><INDENT>if (key in ["<STR_LIT:message>", "<STR_LIT>"]) or (key in rv.__dict__):<EOL><INDENT>raise KeyError("<STR_LIT>" % key)<EOL><DEDENT>rv.__dict__[key] = extra[key]<EOL><DEDENT><DEDENT>return rv<EOL>
A factory method which can be overridden in subclasses to create
specialized LogRecords.