title: Python Logging (function name, file name, line number) using a single file
body: <p>I am trying to learn how an application works. And for this I am inserting debug commands as the first line of each function's body with the goal of logging the function's name as well as the line number (within the code) where I send a message to the log output. Finally, since this application comprises of many files, I want to create a single log file so that I can better understand the control flow of the application.</p>
  
  <p>Here is what I know:</p>
  
  <ol>
  <li><p>for getting function name, I can use <code>function_name.__name__</code> but I don't want to use the function_name (so that I could rapidly copy and paste a generic <code>Log.info("Message")</code> in the body of all functions). I know this could be done in C using <code>__func__</code> macro but I am not sure about python.</p></li>
  <li><p>for getting the filename and line number, I have seen that (and I believe that) my application is using Python <code>locals()</code> function but in a syntax that I am not completely aware of e.g.: <code>options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())</code> and I tried it using like <code>LOG.info("My message %s" % locals())</code> which produces something like <code>{'self': &lt;__main__.Class_name object at 0x22f8cd0&gt;}</code>. Any input on this please?</p></li>
  <li><p>I know how to use logging and add handler to it to log to a file but I am not sure if a single file can be used to record all log messages in correct order of function calls in the project.</p></li>
  </ol>
  
  <p>I would greatly appreciate any help.</p>
  
  <p>Thanks!</p>