title: Overwrite "funcName" in logging
body: <p>I have a utility method which does some logging.</p>
  
  <p>I would like to see the calling method name in the logs, and not the name of the utility method.</p>
  
  <p>For testing I tried this (later I want to get "bar" from the caller via the inspect module).</p>
  
  <pre><code>def helper(...):
      logger.info('foo', extra=dict(funcName='bar'))
  </code></pre>
  
  <p>But this does not work:</p>
  
  <pre><code>  File "/usr/lib/python2.7/logging/__init__.py", line 1167, in info
      self._log(INFO, msg, args, **kwargs)
    File "/usr/lib/python2.7/logging/__init__.py", line 1285, in _log
      record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
    File "/usr/lib/python2.7/logging/__init__.py", line 1263, in makeRecord
      raise KeyError("Attempt to overwrite %r in LogRecord" % key)
  KeyError: "Attempt to overwrite 'funcName' in LogRecord"
  </code></pre>
  
  <p>Here is the output (if I don't try to pass in "extra"):</p>
  
  <pre><code>2017-01-30 15:00:24 loghelper.helper
  </code></pre>
  
  <p>I would like to see the caller:</p>
  
  <pre><code>2017-01-30 15:00:24 calling_module.calling_method
  </code></pre>
  
  <p>How could this be done?</p>
  
  <p><strong>Update</strong></p>
  
  <p>The method-name and other data gets outputted via a logging Formater:</p>
  
  <pre><code>logging.Formatter('%(asctime)s %(name)s.%(funcName)s +%(lineno)s: %(levelname)-8s [%(process)d] %(message)s',
                                     '%Y-%m-%d %H:%M:%S')
  </code></pre>